-
结果始终都是24位,且最后两位都是等号==,请问这种加密算法是如何实现的?5
结果始终都是24位,且最后两位都是等号==,请问这种加密算法是如何实现的?比如:
把“1”加密得到:2lciyOzbzWGgc4XggfEwlg==
把“2lciyOzbzWGgc4XggfEw”加密得到:9pmPlgzttQuLvO3NHCRQpg==
请大虾们赐教,谢谢!2008年12月27日 16:16
3个答案 按时间排序 按投票排序
-
Base64 使用US-ASCII子集的64个字符,即大小写的26个英文字母,0-9,+,/。
编码总是基于3个字符,每个字符用8位二进制表示,因此一共24位,再分为4四组,每组6位,表示一个Base64的值。如下:
"A", "B", "C", "D", "E", "F", "G", "H", "I","J", "K", "L", "M", "N", "O", "P",
"Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "a", "b", "c", "d", "e", "f",
"g", "h", "i","j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v",
"w", "x", "y", "z", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "+", "/"
Base64值为0就是A,为27的就是b。这样,每3个字符产生4位的Base64字符。如果被加密的字符串每3个一组,还剩1或2个字符,使用特殊字符"="补齐Base64的4字。
举个例子说BASE64算法:
比如字符串 abcde
先取前三个字节abc
a b c
97 98 99
然后把它们的ascii码转换成二进制(1字节8位,不足8位在前面补0 )
01100001 01100010 01100011
然后对这组二进制数据重新分组,每组6位
011000 010110 001001 100011
再分别把这四组二进制转换成十进制数据
24 22 9 35
然后在
ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/
这里边对照一下
0对第1个,1对第2个依此类推
24就对第25个Y
22对第23个W
9对第10个J
35对第36个j
加密后的密文就是YWJj
对于abcde剩下的后面两个字节"de"
这是不足3字节的情况
先把它转换了
ascii码是
100 101
转成二进制是
01100100 01100101
再分成6位一组的小组
重新分组
011001 000110 0101
最后一组不足6位,在后面补0。
011001 000110 010100
转10进制
25 6 20
然后在
ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/
这里边对照
结果是ZGU
前面说过:每3个字符产生4位的Base64字符。如果被加密的字符串每3个一组,还剩1或2个字符,使用特殊字符"="补齐Base64的4字。
最后de经过编码的结果就是ZGU=
abcde经过编码的结果就是YwJjZGU=
这是编码过程,解码和编码是相反的一个过程,这里就不多说了。
识别是不是Base64编码其实挺简单的,Base64编码结果是由26个小写字母加26个大写字母加数字和+/这两个符号组成的,稍微观察一下挺容易看出来的。2009年1月07日 15:09
-
有==是 BASE64得到的
24位是根据128位的HASH算法得到的。 至于用了什么hash算法, 我也无法知道。 肯定不是M5。 你需要了解下, 你是如何得到这个值的。 你明明知道结果, 应该程序里能让你测试得到的。 他不是一个加密算法, 是一个数字摘要算法。2008年12月27日 20:03
相关推荐
最新24位CRC文本
javascript中比较运算符'=='与'==='可能大家用的比较多,但是大家对他的区别不是很清楚,接下来小编给大家介绍下js中三个等号和两个等号的区别(== 和 ===),感兴趣的朋友可以参考下
QQ加密的逆算法编写 '复制代码 Public Function Base64Decode(cString As String) As String 'QQ版Base64解码 Dim dStr As String, tStr As String Dim i As Integer Dim l As Integer l = Len(cString) - 2 '减去两...
在 JavaScript 中,等号运算符使用双等号(==)表示,当且仅当两个操作数相等时,它返回 true。本文将详细介绍 JavaScript 等号运算符的用法、特点以及与全等号运算符的区分。 一、等号运算符的基本用法 等号...
DES 使用一个 56 位的密钥以及附加的 8 位奇偶校验位,产生最大 64 位的分组大小。这是一个迭代的分组密码,使用称为 Feistel 的技术,其中将加密的文本块分成两半。使用子密钥对其中一半应用循环功能,然后将输出与...
如果需要定制或者实现相关的脚本都可以私信作者。 现在公司都要求填每天写周报、日报、工时之类的信息,有时候弄着弄着就忘记了。导致工时异常,被领导点名啥的。索性写个自动填写的脚本+定时任务+工作日判断+...
以下是对php中三个等号(===)和两个等号(==)的区别进行了详细的分析介绍,需要的朋友可以过来参考下
前两天在写代码的时候,突然收到警告说项目代码中存在 XSS 漏洞,遂立即根据报告的 URL 排查页面代码,虽然很快就修复了,而且同样问题的讨论两年前就有了,一般来说相对有经验的同学也应该都知道这个点,但是还是...
在Javascript中判断相等关系有双等号(==)和三等号(===)两种。其中双等号(==)是值相等,而三等号(===)是严格相等(值及类型是否完全相等)。 因此有几个常识知识: 1、对于string,number等基础类型,==和===是有区别...
这是一篇很好的文章,关于equ和等号的问题,希望被大家所引用
一个等号 =:表示赋值 ; 两个等号 ==:先转换类型再比较 ; 三个等号 ===:先判断类型,如果不是同一类型直接false。 以上就是小编为大家带来的细数JavaScript 一个等号,两个等号,三个等号的区别全部内容了,希望...
NULL 博文链接:https://jiangzhenwei6.iteye.com/blog/764267
Excel 中不用等号输入算式的技巧 在 Excel 工作表中输入算式是许多用户的需求,但是输入等号“=”却是件麻烦的事。今天,我们就来分享一个技巧,让您可以在 Excel 中不用等号输入算式。 技巧实现 要实现不用等号...
等号运算符重载 函数重载 c++代码 开发工具:VS2010
Makefile文件中的等号左右两边能不能有空格
昨天经高手指导 测试使用了 ==?: 和 if()else() xzyHe 为 DropDownlist 值,如果为空取值为0 代码如下: if (xzyHe ==””){int xzyHe==0;else{int xzyHe = DropDownlist.Text.Trim();} 另外一种写法: 代码如下: int...
"Word 中如何才能打出“不等号”" 在 Word 文档中输入数学符号是非常常见的需求之一,而不等号(≠)是数学运算符中最常用的符号之一。然而,在键盘上并没有专门的不等号键,因此很多人会问怎么打出不等号?在这篇...