java主要的加密解密算法
如基本的单向加密算法:
- BASE64 严格地说,属于编码格式,而非加密算法
- MD5(Message Digest algorithm 5,信息摘要算法)
- SHA(Secure Hash Algorithm,安全散列算法)
- HMAC(Hash Message Authentication Code,散列消息鉴别码)
复杂的对称加密(DES、PBE)、非对称加密算法:
- DES(Data Encryption Standard,数据加密算法)
- PBE(Password-based encryption,基于密码验证)
- RSA(算法的名字以发明者的名字命名:Ron Rivest, AdiShamir 和Leonard Adleman)
- DH(Diffie-Hellman算法,密钥一致协议)
- DSA(Digital Signature Algorithm,数字签名)
- ECC(Elliptic Curves Cryptography,椭圆曲线密码编码学)
1、BASE64
Base64定义:Base64内容传送编码被设计用来把任意序列的8位字节描述为一种不易被人直接识别的形式。(The Base64 Content-Transfer-Encoding is designed to represent arbitrary sequences of octets in a form that need not be humanly readable.)
常见于邮件、http加密,截取http信息,你就会发现登录操作的用户名、密码字段通过BASE64加密的。
实例:
package cn.tzz.java.crypto; import java.io.IOException; import sun.misc.BASE64Decoder; import sun.misc.BASE64Encoder; public class BASE64Util { /**加密*/ public static String encrypt(byte[] key) { return (new BASE64Encoder()).encodeBuffer(key); } /**解密*/ public static String decrypt(String key) { try { return new String((new BASE64Decoder()).decodeBuffer(key),"utf-8"); } catch (IOException e) { e.printStackTrace(); } return null; } public static void main(String[] args) { String encryptStr = encrypt("123456".getBytes()); System.out.println("加密:"+encryptStr); System.out.println("解密:"+decrypt(encryptStr)); } }
2、MD5&SHA
MD5 -- message-digest algorithm 5 (信息-摘要算法)
SHA(Secure Hash Algorithm,安全散列算法)
package cn.tzz.java.crypto.simple; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; public class MD5SHACryptoUtil { /**md5加密*/ public static String md5Encrypt(String str) { String md5String = null; try { // 获得MD5摘要算法的 MessageDigest 对象 MessageDigest md = MessageDigest.getInstance("MD5"); // 使用指定的字节更新摘要 md.update(str.getBytes()); // 获得密文,把密文转换成十六进制的字符串形式 //方式一 md5String = byte2Hex(md.digest()); //方式二 //md5String = byteToHex(md.digest()); //方式三 //md5String = byteToString(md.digest()); } catch (Exception ex) { ex.printStackTrace(); } return md5String; } /**SHA1加密*/ public static String shaEncrypt(String date) { byte[] digest = null; String rs = null; try { // 得到一个SHA-1的消息摘要 MessageDigest messageDigest = MessageDigest.getInstance("SHA-1"); // 添加要进行计算摘要的信息 messageDigest.update(date.getBytes()); // 得到该摘要 digest = messageDigest.digest(); // 将摘要转为字符串 rs = byte2Hex(digest); } catch (NoSuchAlgorithmException e) { e.printStackTrace(); } return rs; } // 1.把密文转换成十六进制的字符串形式(Integer.toHexString函数) public static String byte2Hex(byte[] b) { StringBuffer sb = new StringBuffer(); String tmp = ""; for (int i = 0; i < b.length; i++) { tmp = Integer.toHexString(b[i] & 0XFF); if (tmp.length() == 1){ sb.append("0"); } sb.append(tmp); } return sb.toString(); } // 2.把密文转换成十六进制的字符串形式(自定义) public static String byteToHex(byte[] b) { // 全局数组 char[] hexDigits = {'0' , '1' , '2' , '3' , '4' , '5' ,'6' , '7' , '8' , '9' , 'a' , 'b' , 'c' , 'd' , 'e' , 'f'}; // 把密文转换成十六进制的字符串形式 int j = b.length; char str[] = new char[j * 2]; int k = 0; for (int i = 0; i < j; i++) { byte byte0 = b[i]; str[k++] = hexDigits[byte0 >>> 4 & 0xf]; str[k++] = hexDigits[byte0 & 0xf]; } return new String(str); } // 3.转换字节数组为16进制字串 private static String byteToString(byte[] b) { StringBuffer sBuffer = new StringBuffer(); for (int i = 0; i < b.length; i++) { sBuffer.append(byteToArrayString(b[i])); } return sBuffer.toString(); } // 返回形式为数字跟字符串 private static String byteToArrayString(byte b) { String[] strDigits = { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "a", "b", "c", "d", "e", "f" }; int iRet = b; if (iRet < 0) { iRet += 256; } int iD1 = iRet / 16; int iD2 = iRet % 16; return strDigits[iD1] + strDigits[iD2]; } public static void main(String[] args) { System.out.println(md5Encrypt("123456")); System.out.println(shaEncrypt("123456")); } }
相关推荐
java实现SHA1、SHA、MD5、AES加密、AES解密、BASE64解密、BASE64加密,以及apache BASE64 jar和源码
java关于加密的算法demo代码(Base64加密\数字签名\对称加密算法\非对称加密算法\消息摘要算法) JAVA安全实现三种方式: 1.JDK 2.Commons Codec 3.Bouncy Castle 一。非对称加密算法: 1.DH 2.RSA 3.ELGamal 二。...
base64/md5/RSA/SHA1等加密算法Java实现,附jar包,供学习参考使用
Java加密技术(一)——BASE64与单向加密算法MD5&SHA&MAC Java加密技术(二)——对称加密算法DES&AES Java加密技术(三)——PBE算法 Java加密技术(四)——非对称加密算法RSA Java加密技术(五)——非对称加密...
Java加密技术(一) 关键字: java 加密基础, base64, md5, mac, sha, 单向加密 。。。。。。。。。。。。。。
java_security JAVA安全实现三种方式: ...1.MD5 2.SHA 3.MAC 四。数字签名:JDK实现 com.timliu.security.signature 1.RSA 2.DSA 3.ECDSA 五。对称加密算法:com.timliu.security.symmetric_encryption 1
本代码实现MD5加密算法、MD5(base64)、SHA1加密算法。
md5,aes,des,des3,rsa,sha,base64加密解密实例,含有所需jar包,注释详细,导入项目直接可用。
MD5、SHA、HMAC这三种加密算法,可谓是非可逆加密,就是不可解密的加密方法。我们通常只把他们作为加密的基础。单纯的 以上三种的加密并不可靠。 BASE64 按照RFC2045的定义,Base64被定义为:Base64内容传送编码被...
一个包含MD5.DES3,DES,AES,BASE64,SHA等常见的7种加密算法,可以直接下载集成到项目里面
java的BASE64 MD5 SHA HMAC等算法
简单的java加密算法有: BASE64 严格地说,属于编码格式,而非加密算法 MD5(Message Digest algorithm 5,信息摘要算法) SHA(Secure Hash Algorithm,安全散列算法) HMAC(Hash Message Authentication Code,散列...
Java加密技术(技巧与实例) pdf,内容介绍BASE64、MD5、SHA、HMAC几种方法,主要描述Java已经实现的一些加密解密算法,最后介绍数字证书。
常见的加密算法实现--Java语言编写,花费一个多月认真整理出来的可直接运行的...AES、BASE4、DES、DH、HMAC、MD、PBE、SHA 这些算法可以直接运用到实际项目中,希望对您的实际工作和学习有帮助,喜欢的点个赞呗,谢谢。
所需的工具:Spring开发工具或者其他java开发工具 Base64 二进制(图片、文件、声音)变成可打印的文本... MD5,SHA-1, SHA-256 消息摘要,单向,不可逆 算法确定,结果长度确定 SHA 不是傻,是security-Hash 函数
可以攻玉1094.1 加固你的系统1094.2 加密组件Bouncy Castle 1114.3 辅助...加密算法的关系1355.4 实现原理1365.5 模型分析1375.6 Base64算法实现1385.7 Url Base64算法实现1475.8 应用举例1515.9 小结153第6章验证数据...
常用的加密算法 常用的加密算法:MD5 SHA1 DES AES Base64
Vive.Crypto(Vive.Crypto对各种常用的加密算法进行封装,有 Base64、对称加密(DES、3DES、AES、SM4)、非对称加密(RSA、SM2)、Hash(MD4、MD5、HMAC、HMAC-MD5、HMAC-SHA1、HMAC-SHA256、HMAC-SHA384、HMAC-SHA...
第5章电子邮件传输算法—Base64 134 5.1 Base64算法的由来134 5.2 Base64算法的定义134 5.3 Base64算法与加密算法的关系135 5.4 实现原理136 5.5 模型分析137 5.6 Base64算法实现138 5.7 Url Base64算法实现147 5.8 ...
● BASE64 严格地说,属于编码格式,而非加密算法 ● MD5(Message Digest algorithm 5,信息摘要算法) ● SHA(Secure Hash Algorithm,安全散列算法) ● HMAC(Hash Message Authentication Code,散列消息鉴别码...