dss签名原理

dss签名原理

dss签名原理

文章插图
dss数字签名目前采用较多的是非对称加密技术 , 其实现原理简单的说 , 就是由发送方利用哈希算法对要传送的信息计算得到一个固定位数的消息摘要值 , 用发送者的私有密钥加密此消息的哈希值所产生的密文即数字签名 。
【dss签名原理】然后数字签名和消息一同发给接收方 。
接收方收到消息和数字签名后 , 用同样的哈希算法对消息进行计算得出新的哈希值 , 然后用发送者的公开密钥对数字签名解密 , 将解密后的结果与新的哈希值相比较 , 如相等则说明报文确实来自发方 。
sha算法原理一、SHA1算法简介
安全哈希算法(Secure Hash Algorithm)主要适用于数字签名标准(Digital Signature Standard DSS)里面定义的数字签名算法(Digital Signature Algorithm DSA) 。对于长度小于2^64位的消息 , SHA1会产生一个160位的消息摘要 。当接收到消息的时候 , 这个消息摘要可以用来验证数据的完整性 。在传输的过程中 , 数据很可能会发生变化 , 那么这时候就会产生不同的消息摘要 。
SHA1有如下特性:不可以从消息摘要中复原信息;两个不同的消息不会产生同样的消息摘要 。
二、术语和概念
1.位(Bit) , 字节(Byte)和字(Word)
SHA1始终把消息当成一个位(bit)字符串来处理 。本文中 , 一个“字”(Word)是32位 , 而一个“字节”(Byte)是8位 。比如 , 字符串“abc”可以被转换成一个位字符串:01100001 01100010 01100011 。它也可以被表示成16进制字符串: 0x616263.
2.运算符和符号
下面的逻辑运算符都被运用于“字”(Word)
X ^ Y = X ,  Y逻辑与
X // Y = X ,  Y逻辑或
X XOR Y = X ,  Y逻辑异或
~X = X逻辑取反
X+Y定义如下: 字 X 和 Y 代表两个整数 x 和y, 其中 0 <= x < 2^32 且 0 <= y < 2^32. 令整数z = (x + y) mod 2^32. 这时候 0 <= z < 2^32. 将z转换成字Z, 那么就是 Z = X + Y.
循环左移位操作符Sn(X):X是一个字 , n是一个整数 , 0<=n<=32 。Sn(X) = (X<<n)OR(X>>32-n)
X<<n定义如下:抛弃最左边的n位数字 , 将各个位依次向左移动n位 , 然后用0填补右边的n位(最后结果还是32位) 。X>>n是抛弃右边的n位 , 将各个位依次向右移动n位 , 然后在左边的n位填0 。因此可以叫Sn(X)位循环移位运算 。
三、SHA1算法描述
在SHA1算法中 , 我们必须把原始消息(字符串 , 文件等)转换成位字符串 。SHA1算法只接受位作为输入 。假设我们对字符串“abc”产生消息摘要 。
首先 , 我们将它转换成位字符串如下:
01100001 01100010 01100011
―――――――――――――
‘a’=97‘b’=98‘c’=99
这个位字符串的长度为24 。下面我们需要5个步骤来计算MD5 。

    推荐阅读