0 0

结果始终都是24位,且最后两位都是等号==,请问这种加密算法是如何实现的?5

结果始终都是24位,且最后两位都是等号==,请问这种加密算法是如何实现的?比如:
把“1”加密得到:2lciyOzbzWGgc4XggfEwlg==
把“2lciyOzbzWGgc4XggfEw”加密得到:9pmPlgzttQuLvO3NHCRQpg==
请大虾们赐教,谢谢!
2008年12月27日 16:16

3个答案 按时间排序 按投票排序

0 0

如果只是为了查看原文,在网上搜索一下“乱码查看器”。那玩意可以编码,也可以解码。

2009年1月07日 15:16
0 0

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
0 0

有==是 BASE64得到的
24位是根据128位的HASH算法得到的。 至于用了什么hash算法, 我也无法知道。 肯定不是M5。 你需要了解下, 你是如何得到这个值的。 你明明知道结果, 应该程序里能让你测试得到的。 他不是一个加密算法, 是一个数字摘要算法。

2008年12月27日 20:03

相关推荐

    最新24位CRC文本

    最新24位CRC文本

    JavaScript中三个等号和两个等号的区别(== 和 ===)浅析

    javascript中比较运算符'=='与'==='可能大家用的比较多,但是大家对他的区别不是很清楚,接下来小编给大家介绍下js中三个等号和两个等号的区别(== 和 ===),感兴趣的朋友可以参考下

    QQ加密的逆算法编写

    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等号运算符使用详解.docx

    在 JavaScript 中,等号运算符使用双等号(==)表示,当且仅当两个操作数相等时,它返回 true。本文将详细介绍 JavaScript 等号运算符的用法、特点以及与全等号运算符的区分。 一、等号运算符的基本用法 等号...

    DES加密解密

    DES 使用一个 56 位的密钥以及附加的 8 位奇偶校验位,产生最大 64 位的分组大小。这是一个迭代的分组密码,使用称为 Feistel 的技术,其中将加密的文本块分成两半。使用子密钥对其中一半应用循环功能,然后将输出与...

    程序员每天自动填写周报日报工时脚本完整脚本

    如果需要定制或者实现相关的脚本都可以私信作者。 现在公司都要求填每天写周报、日报、工时之类的信息,有时候弄着弄着就忘记了。导致工时异常,被领导点名啥的。索性写个自动填写的脚本+定时任务+工作日判断+...

    浅析php中三个等号(===)和两个等号(==)的区别

    以下是对php中三个等号(===)和两个等号(==)的区别进行了详细的分析介绍,需要的朋友可以过来参考下

    ruby中的双等号==问题详解

    前两天在写代码的时候,突然收到警告说项目代码中存在 XSS 漏洞,遂立即根据报告的 URL 排查页面代码,虽然很快就修复了,而且同样问题的讨论两年前就有了,一般来说相对有经验的同学也应该都知道这个点,但是还是...

    浅析Javascript中双等号(==)隐性转换机制

    在Javascript中判断相等关系有双等号(==)和三等号(===)两种。其中双等号(==)是值相等,而三等号(===)是严格相等(值及类型是否完全相等)。 因此有几个常识知识: 1、对于string,number等基础类型,==和===是有区别...

    关于等号的问题

    这是一篇很好的文章,关于equ和等号的问题,希望被大家所引用

    细数JavaScript 一个等号,两个等号,三个等号的区别

    一个等号 =:表示赋值 ; 两个等号 ==:先转换类型再比较 ; 三个等号 ===:先判断类型,如果不是同一类型直接false。 以上就是小编为大家带来的细数JavaScript 一个等号,两个等号,三个等号的区别全部内容了,希望...

    两个等号与三个等号的区别

    NULL 博文链接:https://jiangzhenwei6.iteye.com/blog/764267

    税会实务教你在Excel中不用等号输入算式.doc

    Excel 中不用等号输入算式的技巧 在 Excel 工作表中输入算式是许多用户的需求,但是输入等号“=”却是件麻烦的事。今天,我们就来分享一个技巧,让您可以在 Excel 中不用等号输入算式。 技巧实现 要实现不用等号...

    等号运算符重载

    等号运算符重载 函数重载 c++代码 开发工具:VS2010

    Makefile文件中的等号左右两边能不能有空格

    Makefile文件中的等号左右两边能不能有空格

    asp.net 关于==?:和if()else()条件判断等效例子

    昨天经高手指导 测试使用了 ==?: 和 if()else() xzyHe 为 DropDownlist 值,如果为空取值为0 代码如下: if (xzyHe ==””){int xzyHe==0;else{int xzyHe = DropDownlist.Text.Trim();} 另外一种写法: 代码如下: int...

    word中如何才能打出“不等号”.docx

    "Word 中如何才能打出“不等号”" 在 Word 文档中输入数学符号是非常常见的需求之一,而不等号(≠)是数学运算符中最常用的符号之一。然而,在键盘上并没有专门的不等号键,因此很多人会问怎么打出不等号?在这篇...

Global site tag (gtag.js) - Google Analytics