md5算法

不可逆的:原文--》密文、用系统的API可以实现;

123456 ---密文

1987 ----密文;

算法步骤:

  • 1、用每个byte去和11111111做与运算并且得到的是int类型的值:

   byte & 11111111;

  • 2、把int 类型转成 16进制并返回String类型;
  • 3、不满八个二进制位就补全;
 public static void main(String[] args) throws NoSuchAlgorithmException {

       MessageDigest digest = MessageDigest.getInstance("md5");

       String password = "123456";

       byte [] result = digest.digest(password.getBytes());

       StringBuffer buffer  = new StringBuffer();

       for(byte b : result){
//0xff是十六进制,十进制为255
int nuber = b & 0xff;
String str = Integer.toHexString(nuber);
if(str.length()==1){
buffer.append("0");
}
buffer.append(str);
}
//这就是MD5加密得到的值
System.out.println(buffer); }

  会抛出没有事先准备的算法异常NoSuchAlgorithmException;

  • 4、网站验证算法是否正确(www.cmd5.com)、加密再加密再演示
  • 5、密码加盐,即byte相与的数不上标准的oxff,我们进行修改为oxfff或其他的
  • 6、银行密码保存是进行了15~30次重复加密,破解非常复杂,不用担心安全性

最新文章

  1. iOS 学习 - 16.绘制虚线
  2. Watin 杂谈
  3. CSS控制样式的三种方式优先级对比验证
  4. NYOJ题目769乘数密码
  5. hdu 5643 King's Game 约瑟夫变形
  6. 判断checkbox选中
  7. JS兼容性处理
  8. Java5中的线程池实例讲解
  9. javascript - 工作笔记 (事件三)
  10. 1. Skippr
  11. base64格式图片转换为FormData对象进行上传
  12. c#中RGB与int类型之间的转换
  13. [转]Cordova Android 返回键拦截(backbutton)和退出(再点击一次跳出)
  14. mysql 数据库 命令行的操作——对库的操作
  15. rest_framework学习之路
  16. Python之IO编程——文件读写、StringIO/BytesIO、操作文件和目录、序列化
  17. es的分词器analyzer
  18. linux命令总结之date命令
  19. Python:笔记(7)——yield关键字
  20. 解决charles中文乱码(附代码)

热门文章

  1. 使用 Fluent API 配置/映射属性和类型(摘自微软Data Access and Storage)
  2. 用Join子句进行分组联接
  3. 利用 Android Gradle 瘦身 apk
  4. WebService 不依赖配置文件直接在构造函数配置地址
  5. ISO20000
  6. python-program
  7. Ionic页面加载前 ionic页面加载完成 ionic页面销毁执行的事件
  8. 使用 ServiceStack.Text 序列化 json的实现代码【转】
  9. Does Lamda expression return value?
  10. 教你用plsql建立索引加快查询oracle数据的速度