社区
其它技术问题
帖子详情
SHA1WithRSA算法是怎么一回事?
liwei960067495
2011-10-10 11:06:41
百度谷歌都找不到相关的概念。。。。。
...全文
1904
1
打赏
收藏
SHA1WithRSA算法是怎么一回事?
百度谷歌都找不到相关的概念。。。。。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
1 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
hanlin10728
2012-02-09
打赏
举报
回复
SHA1即安全哈希算法(Secure Hash Algorithm),用于签名;RSA是目前最有影响力的公钥加密算法。
说到这就的提到公钥和私钥:公钥、私钥分居客户端和服务器端,分别用于加密和解密。同时,私钥还用于签名,公钥还用于验证签名。
下边是一个发送端的签名及对签名的加密,接收端的解密与验证签名的应用:
/*
* SHA1WithRSA:用SHA算法进行签名,用RSA算法进行加密
* 发送端的签名及对签名的加密,接收端的解密与验证签名
*/
package test1;
import java.security.InvalidKeyException;
import java.security.KeyPair;
import java.security.KeyPairGenerator;
import java.security.NoSuchAlgorithmException;
import java.security.PrivateKey;
import java.security.PublicKey;
import java.security.Signature;
import java.security.SignatureException;
public class RSA_Demo {
RSA_Demo()
{
init();
}
private void init()
{
prepare();
doSenderWork();
doReceiverWork();
}
//share by sender and receiver
Signature sign=null;
//belong to sender,it visible to sender and receiver
PublicKey publicKey=null;
//belong to sender,it is only visible to sender
PrivateKey privateKey;
private void prepare()
{
KeyPairGenerator keyGen=null;
try {
//实例化一个RSA算法的公钥/私钥对生成器
keyGen=KeyPairGenerator.getInstance("RSA");
} catch (NoSuchAlgorithmException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
int keysize=1024;
//设置公钥/私钥对的长度
keyGen.initialize(keysize);
//生成一个RSA算法的公钥/私钥
KeyPair keyPair=keyGen.generateKeyPair();
privateKey=keyPair.getPrivate();
publicKey=keyPair.getPublic();
try {
//实例化一个用SHA算法进行散列,用RSA算法进行加密的Signature.
sign=Signature.getInstance("SHA1WithRSA");
} catch (NoSuchAlgorithmException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
void doSenderWork()
{
String words="This is robin.How are you?";
Message msg=new Message(words.getBytes());
try {
//设置加密散列码用的私钥
sign.initSign(privateKey);
} catch (InvalidKeyException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
//设置散列算法的输入
sign.update(msg.getBody());
} catch (SignatureException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
byte data[]=null;
try {
//进行散列,对产生的散列码进行加密并返回
data=sign.sign();
} catch (SignatureException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
//把加密后散列(即签名)加到消息中
msg.setSignature(data);
//发送消息
sendMsg(msg);
}
Message sendingMsg;
void sendMsg(Message sendMsg)
{
sendingMsg=sendMsg;
System.out.println("sending Message");
}
void doReceiverWork()
{
//收到消息
Message msg=getReceivedMsg();
try {
//设置解密散列码用的公钥。
sign.initVerify(publicKey);
} catch (InvalidKeyException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
try {
//设置散列算法的输入
sign.update(msg.getBody());
} catch (SignatureException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
/*进行散列计算,比较计算所得散列码是否和解密的散列码是否一致。
* 一致则验证成功,否则失败
*/
if(sign.verify(msg.getSignature()))
{
System.out.println("数字签名验证成功!");
}
else
{
System.out.println("数字签名验证失败!");
}
} catch (SignatureException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
Message getReceivedMsg()
{
System.out.println("receiving Message");
return sendingMsg;
}
}
class Message
{
private byte [] body;
private byte [] signature;
Message(byte data[])
{
body=data;
}
byte[] getBody()
{
return body;
}
byte[] getSignature()
{
return signature;
}
void setSignature(byte data[])
{
signature=data;
}
}
DELPHI实现标准
SHA1
With
RSA
、MD5With
RSA
算法
本文介绍了如何在DELPHI中实现
SHA1
With
RSA
和MD5With
RSA
加密
算法
,包括加载私钥、进行摘要处理以及
RSA
加密的过程。通过引用相关资源和提供关键代码示例,展示了实现这些
算法
的具体步骤,帮助开发者解决此类问题。
Python使用
SHA1
with
Rsa
算法
实现签名
本文介绍如何在Python中使用
SHA1
with
RSA
算法
进行数字签名,包括相关代码示例。
PHP MD5with
RSA
、
SHA1
with
RSA
、SHA256with
RSA
算法
签名
本文深入解析了MD5with
RSA
、
SHA1
with
RSA
及SHA256with
RSA
三种签名
算法
的实现过程,包括如何使用私钥生成数字签名以及如何利用公钥进行签名验证。通过PHP代码示例,详细展示了每种
算法
的具体操作步骤。
sha1
with
rsa
算法
本文介绍了加密与签名的概念,包括对称加密与非对称加密的区别,重点讨论了
RSA
算法
和
SHA1
with
RSA
数字签名的原理。非对称加密中,
RSA
用于公钥验签和私钥解密,而数字签名则确保数据完整性和发送者身份验证。还探讨了
RSA
秘钥的pkcs1和pkcs8格式,并提供了Java.security包中进行签名、验签、加密和解密的操作方法。
java中数字签名MD5with
RSA
和
SHA1
with
RSA
博客介绍了数字签名,其用于验证消息发送者身份,基于非对称加密
算法
。阐述了数字签名的生成和验证原理,还给出Java自带数字签名API的代码实例,演示了MD5with
RSA
和
SHA1
with
RSA
两种方式,展示了签名及验证结果。
其它技术问题
3,881
社区成员
9,044
社区内容
发帖
与我相关
我的任务
其它技术问题
C/C++ 其它技术问题
复制链接
扫一扫
分享
社区描述
C/C++ 其它技术问题
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章