五,应用文练笔(按每种文体的格式和要求准确拟写)(25分)1,应用文练笔(8分)2,写一个留言条(8分)3,写一个请柬(9分)《汉语应用文写作》模拟考试题 B卷...
在数字签名结果中可以包含被签名数据(称为Attach方式)或不包含被签名数据(称为Detach方式);在数字签名结果中可以包含签名者证书也可以不包含签名者证书。
“签名值”是通过私钥对“被签名内容”和其它可认证属性进行签名运算的结果。因此,在上述签名格式中的证书、CLRs、被签名内容等可以从已生成的签名结果中删除或重新插入。一般情况下,签名格式根据下面的需要进行选择:
1) 需要保存在数据库中的数字签名与被签名原数据采用分离的方式进行存放,即在“被签名内容信息”内不含实际的“被签名内容”,被签名内容存放在数据库其它地方。
2) 不包含签名者证书,可以减少签名数据大小,但在验证时需要查找证书。
3) 需要在网络上传输(例如与其它系统交换数据)的数字签名,在签名包中可以包含被签名数据和签名者证书。
数字签名前要对数据使用SHA-1或SM3数据摘要算法作HASH运算,再用用户的签名私钥作RSA运算,结果即为对数据的“数字签名”。下面的DATA为待签名数据,HASH(…)为HASH函数,SIGN(…)为签名运算函数,DS为签名结果。数字签名过程为:
1)对数据作HASH运算:
3)使用用户的私钥(pvk)对填充后的数据块作RSA运算。
4)按PKCS#7标准格式对签名进行编码,得到的结果记为signedData。
设待验证的签名为signedData,签名原数据为DATA,则验证签名的流程为:
1)从signedData中提取签名者证书序列号等信息,按证书序列号获取签名者证书并检验证书的有效性(在签名中提取证书或通过LDAP下载证书);
2)从证书中提取签名者公钥(pbk),使用公钥对签名结果作RSA公钥解密运算并去掉填充:
3)对签名原数据作HASH运算:
4)比较H与H’,如相等,则验证正确,否则验证错误。
数字信封用于通信双方交换数据。发送方生成一个随机的报文密钥,使用报文密钥对发送内容进行加密(对称算法),再用接收方的公钥对报文密钥加密,最后将加密的报文密钥和加密的发送内容按PKCS#7标准,编码组成一个“数字信封”。发送方还可以为发送内容附加签名。
数字信封的格式,见表2、表3:
表2 数字信封格式(不带签名)
数 字 信 封 格 式 (不带签名) |
数 字 信 封 格 式 (带签名) |
加密的内容(使用报文密钥加密) |
签名者证书和签发者证书(可选) |
加密的签名值(使用报文密钥加密) |
1)随机生成报文密钥mk;
2)用接收方公钥对mk加密(按PKCS#1标准);
3)使用mk对发送内容加密;
4)如果需要签名,则执行如下步骤:
a) 对发送内容作数字签名(见数字签名过程,但不作编码);
b) 使用mk为密钥对签名进行加密;
5)按格式编码构成数字信封。
接收方从数字信封中解出所需的内容,并验证发送方的签名(如果有的话)。
1)使用接收者自已的私钥解出mk;
2)使用mk为密钥解密传送的内容;
3)如果存在签名,则执行:
a) 使用mk为密钥解出签名值;
}