MD5 与 Base64一起使用 加密,计算原理
来源:互联网 发布:做广告视频的软件 编辑:程序博客网 时间:2024/06/05 19:08
加密原文:
1234
加密后的结果:
gdyb21LQTcIANtvYMT7QVQ==
22位(不包括等于号)
123456
4QrcOUm6Wau+VuBX8g+IPg==
如何计算
1.使用MD5,取得信息摘要
1234对应的信息摘要如下
[-127, -36, -101, -37, 82, -48, 77, -62, 0, 54, -37, -40, 49, 62, -48, 85]
一共 16 byte
16*8=128
128%6=2
21余2
2.使用Base64再次处理
1.将每三个字节分成一组,一共24个二进制位:3*8=24
2.将这24个二进制位分成4组,每组有6个二进制位:24/4=6
3.在每组前加两00,扩展成32个二进制位,即4个字节:4*(6+2)=32
4.根据下面的编码表,得到扩展后每个字节的对应符号,就是Base64的编码值
注意:
1.因为转换后的每个字符的最高两位都是0,所以实际有效位数是6位,
也就是26=64个字符就可以覆盖所有的编码。
2.如果剩下的字符不足3个字节,则用0填充,输出字符使用"=",
因此编码后输出的文本末尾可能会出现1或2个"="。
3.因为Base64将3个字节转化成4个字节,因此Base64编码后的文本,
会比原文本大出三分之一左右。
补=的规律:
(如果N*8%6后余2个二进制位,就补2个=,余4个二进制位就补一个=,整除不补)
剩余两位 ,2*8=16 % 6 结果为(余数为) 4
剩余一位,1*8=8 %6 结果为(余数为) 2
前三位对应的二进制(正数的补码)
-127
10000001
-36
11011100
-101
10011011
转化为四个字符(3*8bit=4*6bit)
100000 ⇒32 ⇒g
011101 ⇒29 ⇒d
110010 ⇒50 ⇒y
011011 ⇒27 ⇒b
补充说明
MD5是一种信息摘要算法,并不是加密算法
相关知识
1.负数二进制表示
正数对应的反码
反码加1,取得补码
补码就是负数的二进制表示
2.base64编码表
package com.accenture.ams.lms.util;import java.io.UnsupportedEncodingException;import java.security.MessageDigest;import java.security.NoSuchAlgorithmException;import sun.misc.BASE64Encoder;@SuppressWarnings("restriction")public class MD5Util {/** * 利用MD5进行加密 * * @param str * 待加密的字符串 * @return 加密后的字符串 * @throws NoSuchAlgorithmException * @throws UnsupportedEncodingException */public static String EncoderByMd5(String str) {if (str == null) {return null;}try {// 确定计算方法MessageDigest md5 = MessageDigest.getInstance("MD5");BASE64Encoder base64en = new BASE64Encoder();// 加密后的字符串return base64en.encode(md5.digest(str.getBytes("utf-8")));} catch (NoSuchAlgorithmException | UnsupportedEncodingException e) {return null;}}}
- MD5 与 Base64一起使用 加密,计算原理
- MD5加密与BASE64编码
- base64编码 与 MD5加密
- Base64&&Md5加密算法计算头部与sig
- MD5+SHA+BASE64加密
- Base64和MD5加密
- Base64、MD5加密
- Base64 和 MD5 加密
- python MD5(base64)加密
- 加密、base64、MD5.......
- iOS经常使用加密方式(MD5,AES,BASE64)与网络数据安全
- md5加密base64加密解密
- Java-Base64加密&&MD5加密
- MD5 加密 和Base64加密
- Md5(base64)加密与解密实战[转]
- 专家讲解:Md5(base64)加密与解密实战
- BASE64,MD5,SHA,HMAC加密与解密算法(java)
- 使用Apache digest可以做md5 SHA1 BASE64加密
- MFC的基础知识以及文档视图模式
- windows下SSD训练自己的数据
- 同时安装了python2和python3,如何使用pip
- 关于XER导入/导出中文问题
- 动态改变StandardShader的RenderingMode让模型透明
- MD5 与 Base64一起使用 加密,计算原理
- Ubuntu通过修改配置文件进行网络配置
- hdu2086
- 1725: [Usaco2006 Nov]Corn Fields牧场的安排
- 51nod 1359 循环探求
- tensorflow1.1/保存和提取训练好的参数
- 算法概论8.16题解
- RHEL 7 修改网卡名
- [算法作业] Chapter 8 NP-complete problems 课后习题部分证明