当前位置:首页 » 密码管理 » 加密结果

加密结果

发布时间: 2023-02-18 18:56:41

‘壹’ MYsql AES 加密

使用mysql的加密函数运行:

select HEX(AES_ENCRYPT( 'test aes encrypt','123')) as aesTest

输出密文:



https://dev.mysql.com/doc/refman/8.0/en/encryption-functions.html#function_aes-encrypt

官方文档解释:

The block_encryption_mode system variable controls the mode for block-based encryption algorithms. Its default value is <font color="red"> aes-128-ecb </font>, which signifies encryption using a key length of 128 bits and ECB mode. For a description of the permitted values of this variable, see Section 5.1.8, “Server System Variables” .

在线加密验证 : http://tool.chacuo.net/cryptaes

该网加密结果为:



与mysql加密结果一致,只是大小写差异。

‘贰’ DES加密解密结果为何不一致

将明文分成n个64比特分组,如果明文长度不是64比特的倍数,则在明文末尾填充适当数目的规定符号。对明文组用给定的密钥分别进行加密,行密文C=(C0,C1,……,Cn-1)其中Ci=DES(K,xi),i=0,1,…..,n-1。第二种密文分组链接方式(CBC) 在CBC方式下,每个明文组xi在加密前与先一组密文按位模二加后,再送到DES加密,CBC方式克服了ECB方式报内组重的缺点,但由于明文组加密前与一组密文有关,因此前一组密文的错误会传播到下一组。 第三种密文反馈方式(CFB),可用于序列密码 明文X=(x0,x1,……,xn-1),其中xi由t个比特组成0 第四种输出反馈方式(OFB),可用于序列密码 与CFB唯一不同的是OFB是直接取DES输出的t个比特,而不是取密文的t个比特,其余都与CFB相同。但它取的是DES的输出,所以它克服了CFB的密文错误传播的缺点

‘叁’ 第三代加密法--维吉尼亚加密法

        加密法的需求在军事上及政治上的显现极为旺盛,也迫使它快速地向前发展。传统的移位及替代法虽然使用方便,但可以采用统计的方式进行破解,安全性还有待加强。

        所以后期就发展出一种新的加密方法,即维吉尼亚加密法。这种方法的出发点是,对于相同的字母或数字,加密后的密文可能不同,这就没法从统计的角度解密。

        基本的加密方法,可以参考下图。

        这张图中, 第一行代表原文的数字或字符,每一列代表加密采用第几套替代方案,每一横行的字符对应该列的字母加密后的密文 。是不是够复杂哈,如果采用这样的方式手工加密解密,写一封邮件估计要崩溃死了。。。。

        而且这套加密方法使用中还存在一些问题,就是需要把 整个加密图传给解密方 ,没有该图做指导,解密的人也是一脸懵逼。。。。

        但方法是死的,人是活的,人最可贵的一点就是遇到问题会想各种解决方法。所以这个问题如何解呢?关键在于一个密钥(key),比如以“yes”为密钥,加密时第一个字母采用"y"(即第25套替代方案)加密,将原文字母向后移动25位;第二个字母采用“e”(即第5套方案)加密,将原文字母向后移动5位;第三个字母采用"s"(即第19套方案)加密,将原文字母向后移动19位;依次循环加密。

        比如加密“hello”,加密结果就如下,加密后的密文为“FIDJS”,两个字母“l”分别对应D和J,就没法用统计法找出破绽了。    

        但该方法加密解密超费劲,人工处理很容易出错,所以发明了200年还未被广泛使用,直到能够采用机器进行处理之后,才被人翻出来使用。

       

‘肆’ JAVA写RSA加密,公钥私钥都是一样的,为什么每次加密的结果不一样

因为rsa是非对称加密,它使用的是随机大素数的抽取,每次随机生成的,所以每次加密的结果不可能一样

‘伍’ 同样的字符串,.net用SHA1加密出来的结果和网站的加密结果不同。求解

在SQL Server 2005下自带的函数HashBytes() ,此函数是微软在SQL Server 2005中提供的,可以用来计算一个字符串的MD5和SHA1值,使用方法如下:

--获取123456的MD5加密串
select hashbytes('MD5', '123456') ;
--获取123456的SHA1加密串
select hashbytes('SHA1', '123456') ;
有了这个函数可以在SQL Server中为字符串进行加密,但是HashBytes() 函数的返回结果是VarBinary类型(以 0x 开头 16 进制形式的二进制数据)。通常情况下,我们需要的都是字符串型的数据,很多人首先想到的可能就是用CAST或Convert函数将VarBinary转换为VarChar,但这样转换后的结果会是乱码,正确转换VarBinary可变长度二进制型数据到16进制字符串应该使用系统内置函数sys.fn_VarBinToHexStr()或sys.fn_SqlVarBaseToStr(只在sqlserver2005以后的有),如下所示:

select sys.fn_VarBinToHexStr(hashbytes('MD5', '123456'))
然后就可以截取需要的部分:

set right(sys.fn_VarBinToHexStr(hashbytes('MD5','123456')),32)
为MD5加密串。

‘陆’ base64加密的结果还是字符串吗

base64加密的结果还是字符串吗
首先,Base64算不上是一种加密算法

Base64是网络上最常见的用于传输8Bit字节代码的编码方式之一,它的目的是用ASCII中定义的可见字符去表示任意的二进制数据。之所以要这样做,是因为计算机中很多数据是只能通过可见字符去传输的(比如我们的网站网址,比如一些面向字符的网络协议如SMTP等),但是这些情景有时由需要去传输二进制数据。基于这样的需要,诞生了Base64.
简单来讲,Base64就是用下列总计64个字符:
A-Z
a-z
0-9
+
/
去表示二进制数据。二进制数据以字节为组,一个字节8bit存在256个状态,而一个Base64字符只有64个状态。机智的人们于是规定,用每4个Base64字符去表示3个二进制字节,因为:

64 * 64 * 64 * 64 = 256 * 256 * 256

因此,Base64字符串的长度必然是4的整数倍。此外,由于二进制的字节数不一定是3的整数倍,所以Base64字符串在结尾是可能有空的。这些空的状态,Base64引入第65个字符去表示:

=

这也是为什么Base64很多都是以=或==结尾的。但是注意,也存在不以=或==结尾的Base64,只要编码的二进制字节数恰好被3给整除。

热点内容
苹果手机怎么上传视频到qq空间 发布:2025-08-22 07:10:03 浏览:636
淘宝androidsdk 发布:2025-08-22 06:52:04 浏览:938
编程挣钱吗 发布:2025-08-22 06:31:21 浏览:1001
敬请存储 发布:2025-08-22 06:25:42 浏览:610
linuxphp7配置 发布:2025-08-22 06:17:01 浏览:415
shellftp脚本 发布:2025-08-22 06:11:57 浏览:797
sql数据库打开 发布:2025-08-22 05:58:36 浏览:889
服务器IP怎么找回 发布:2025-08-22 05:41:28 浏览:607
手机百度怎样上传视频 发布:2025-08-22 05:28:08 浏览:833
乱码源码 发布:2025-08-22 05:26:41 浏览:205