常用加解密工具類(MD5、SHA、DES、AES、RSA)
解密工具類,實現了常用的加解密類。包括單向加密:MD5、SHA;對稱加密:DES、AES;非對稱加密:RSA
完整程式碼見:https://git.oschina.net/bayern.com/SecureUtils.git 同時提供ant打包指令碼。
下面展示部分關鍵程式碼
MD5 單向加密: /** * 返回MD5單向加密後的十六進位制字串 * @param data * @return * @throws Exception */ public String getEncryptForHex(byte[] data) throws Exception { byte[] digestData = encrypt(data); StringBuffer hex = new StringBuffer(); for(int i = 0; i < digestData.length; i++) { int h = ((int)digestData[i]) & 0XFF; if(h < 16) { hex.append("0"); } hex.append(Integer.toHexString(h)); } return hex.toString(); } DES 對稱加密類: @Override public byte[] encrypt(byte[] data) throws Exception { if(secretKey == null || "".equals(secretKey)) { throw new Exception("scretKey need to exists"); } SecretKey md5Key = getKey(secretKey); Cipher cipher = Cipher.getInstance(ALGORITHM); cipher.init(Cipher.ENCRYPT_MODE, md5Key); return cipher.doFinal(data); } @Override public byte[] decrypt(byte[] data) throws Exception { if(secretKey == null || "".equals(secretKey)) { throw new Exception("scretKey need to exists"); } SecretKey md5Key = getKey(secretKey); Cipher cipher = Cipher.getInstance(ALGORITHM); cipher.init(Cipher.DECRYPT_MODE, md5Key); return cipher.doFinal(data); } RSA 非對稱加密。私鑰加密 & 私鑰解密 & 私鑰簽名 @Override public byte[] encrypt(byte[] data) throws Exception { PrivateKey rsaPrivateKey = getRSAPrivateKey(); Cipher cipher = Cipher.getInstance(ALGORITHM); cipher.init(Cipher.ENCRYPT_MODE, rsaPrivateKey); return cipher.doFinal(data); } @Override public byte[] decrypt(byte[] data) throws Exception { PrivateKey rsaPrivateKey = getRSAPrivateKey(); Cipher cipher = Cipher.getInstance(ALGORITHM); cipher.init(Cipher.DECRYPT_MODE, rsaPrivateKey); return cipher.update(data); } /** * 使用私鑰 對資料進行簽名 * @param data * @return * @throws Exception */ public String sign(byte[] data) throws Exception { PrivateKey rsaPrivateKey = getRSAPrivateKey(); Signature signature = Signature.getInstance(SIGN_ALGORITHM); signature.initSign(rsaPrivateKey); signature.update(data); return encoder(signature.sign()); } RSA 非對稱加密。公鑰加密 & 公鑰解密 & 公鑰校驗簽名 @Override public byte[] encrypt(byte[] data) throws Exception { if(publicKey == null || "".equals(publicKey)) { throw new Exception("publicKey is need exists"); } PublicKey rsaPublicKey = getRSAPublicKey(publicKey); Cipher cipher = Cipher.getInstance(ALGORITHM); cipher.init(Cipher.ENCRYPT_MODE, rsaPublicKey); return cipher.doFinal(data); } @Override public byte[] decrypt(byte[] data) throws Exception { if(publicKey == null || "".equals(publicKey)) { throw new Exception("publicKey is need exists"); } PublicKey rsaPublicKey = getRSAPublicKey(publicKey); Cipher cipher = Cipher.getInstance(ALGORITHM); cipher.init(Cipher.DECRYPT_MODE, rsaPublicKey); return cipher.doFinal(data); } /** * 使用公鑰校驗簽名 * @param data * @param sign * @return * @throws Exception */ public boolean verifySign(byte[] data, String sign) throws Exception { if(publicKey == null || "".equals(publicKey)) { throw new Exception("publicKey is need exists"); } PublicKey rsaPublicKey = getRSAPublicKey(publicKey); Signature signature = Signature.getInstance(SIGN_ALGORITHM); signature.initVerify(rsaPublicKey); signature.update(data); return signature.verify(decoder(sign)); }
相關文章
- 常用加密解密演算法【RSA、AES、DES、MD5】介紹和使用加密解密演算法
- 【原創】淺析密碼學在網際網路支付中的應用|RSA,Hash,AES,DES,3DES,SHA1,SHA256,MD5,SSL,Private Key,Public Key密碼學3D
- nodejs常用加密方式 RSA & AESNodeJS加密
- iOS 加密 base64 sha1 MD5 RSAiOS加密
- Golang 裡的 AES、DES、3DES 加解密,支援 ECB、CBC 等多種模式組合Golang3D解密模式
- Java DES 加解密("DES/EBC/NoPadding")Java解密padding
- Windows自帶MD5 SHA1 SHA256命令列工具Windows命令列
- Java之DES加解密解析Java解密
- 3DES加解密-EncryptAndDecryptFile3D解密
- Java RSA 分段加解密Java解密
- JavaScript實現的base64加密、md5加密、sha1加密及AES加密JavaScript加密
- AES和DES程式碼實現
- Java DES 加解密("DES/ECB/PKCS1Padding")Java解密padding
- Java DES 加解密("DES/CBC/PKCS5Padding")Java解密padding
- AES加解密使用總結解密
- .NET AES加解密(128位)解密
- rsa && sha1 js codeJS
- Java之RSA加解密解析Java解密
- C# RSA 分段加解密C#解密
- Openssl RSA基本加解密操作解密
- MD5加密工具類加密
- 小規模DES手寫加解密解密
- vue 核心加解密工具類 方法Vue解密
- JavaScript實現線上MD5、SHA、AES、Rabit 、RC4、TripleDES Ripemd160 加密解密工具-toolfk程式設計師線上工具網JavaScript加密解密程式設計師
- JAVA中MD5加密(MD5工具類)Java加密
- VUE專案 AES加解密(小白版)Vue解密
- OpenSSL 使用AES對檔案加解密解密
- Python AES - base64 加解密Python解密
- framewrok RSA SHA512加密加密
- MD5程式碼工具類
- 使用Windows 10自帶工具 校驗MD5 SHA1 SHA256型別檔案Windows型別
- 使用Apache的DigestUtils類實現雜湊摘要(SHA/MD5)Apache
- 安全篇-AES/RSA加密機制加密
- 一個聚合的加解密工具類解密
- 密碼學之DES/AES演算法密碼學演算法
- 使用OpenSSL替代MCrypt實現AES加解密解密
- CryptoJs 使用 AES CBC 加解密資料JS解密
- PHP和.NET通用的加密解密函式類,均使用3DES加解密PHP加密解密函式3D