社区
其它技术问题
帖子详情
SHA1WithRSA算法是怎么一回事?
liwei960067495
2011-10-10 11:06:41
百度谷歌都找不到相关的概念。。。。。
...全文
1817
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;
}
}
SHA256With
RSA
签名
算法
⽀付⽹关回调签名⽅案
SHA256With
RSA
签名
算法
⽀付⽹关回调签名⽅案
ANDROID接入华为SDK遇到的SHA256with
RSA
的问题解决
华为的SDK在登录时原来的实现思路是:1、C->SDK-C 2、SDK-C->C 3、C->S 4、S->SDK-S 5、SDK-S->S 6、S->C 新版本中,把步骤4和步骤5省了,官方原文:游戏可以将gameAuthSign、 playerId、 appId和ts提交到游戏自己的服务器,使用文档附 录一中的公钥进行验签,验签方式如下: a. 将 appId、 ts 和 playerId
ESP32-C3通过ArduinoIDE实现支付宝签名
算法
RSA
2(SHA256with
RSA
)
支付宝说了一种收银机直连后台的方案,但问题是当面付SDK却只有PHP/JSP/ASP这几种当然还有一种C调用CRUL的,这些SDK都有一个共同的特点就是大,不能用于如ESP32的IOT设备,于是我想自行实现API。值得注意的是证书序列号的计算,由于需要提取SN在单片机上提取证书签发机关及各项内容并计算MD5比较麻烦,推荐用别的语言(PHP ASP JSP)在本地环境下通过调用官方SDK并下断点取得各证书的SN。请在开发的应用中调用当面付的话写上我的推荐人PID参数,这样我才能收到一点点手续费分成。
Mysql指纹匹配_指纹匹配
算法
-设备指纹
算法
-指纹
算法
sha1
是安全的
数字证书的签名哈希
算法
跟指纹
算法
都是指对摘要(指纹的)的编码吗?证书签名使用的
算法
是发布者自己规定的 使用自己的私钥对证书编码的哈希值进行加密 一般
算法
为md5with
rsa
或者sha256with
rsa
。哈希
算法
是唯一的 就是把证书编码转换为固定长度的2进制 这个过程不可逆 就是说无法通过哈希值还原证书编码。指纹
算法
就是哈希
算法
一般都是sh1。证书认证的流程是证书所有者把证书和指纹(证书的哈希...
hbuilder x安卓证书无效
一开始一直按网上的方法生成证书发现生成出来的证书一直是无效的证书。 然后就想到应该是hbuilder解析不了证书格式 于是开始折腾 先去下载了hbuilder官方的证书,用keytool查看 keytool -list -v -keystore ./HBuilder.keystore 发现 签名
算法
名称:
SHA1
with
RSA
主体公共密钥
算法
:1024 位
RSA
密钥 密钥库类型:JKS 果然和默认生成不一样,下面直接给出解决方案。 第一步生成正常的证书: keytool -genkey -ali
其它技术问题
3,881
社区成员
9,054
社区内容
发帖
与我相关
我的任务
其它技术问题
C/C++ 其它技术问题
复制链接
扫一扫
分享
社区描述
C/C++ 其它技术问题
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章