RSA1、RSA256 签名
public static String MakeSign(String Data) {
try {
byte[] data = Data.getBytes();
byte[] keyBytes = base64String2Byte(PrivateKey);
PKCS8EncodedKeySpec pkcs8KeySpec = new PKCS8EncodedKeySpec(keyBytes);
KeyFactory keyFactory = KeyFactory.getInstance("RSA");
PrivateKey priKey = keyFactory.generatePrivate(pkcs8KeySpec);
Signature signature = Signature.getInstance("SHA256withRSA");//这个根据需求填充SHA1WithRSA或SHA256WithRSA
signature.initSign(priKey);
signature.update(data);
return byte2Base64String(signature.sign());
} catch (Exception e) {
return "";
}
}
// base64字符串转字节数组
2 public static byte[] base64String2Byte(String base64Str) {
3 return Base64.decodeBase64(base64Str);
4 }
RSA1、RSA256 验签
`public static boolean VeriSign(String Data_ori, String Singnature) {
try {
byte[] signed = base64String2Byte(Singnature);
X509EncodedKeySpec keySpec = new X509EncodedKeySpec(base64String2Byte(PublicKey));
KeyFactory keyFactory = null;
keyFactory = KeyFactory.getInstance("RSA");
PublicKey publicKey = keyFactory.generatePublic(keySpec);
Signature signature2 = Signature.getInstance("Sha256WithRSA");//这个根据需求填充SHA1WithRSA或SHA256WithRSA
signature2.initVerify(publicKey);
signature2.update(Data_ori.getBytes("UTF-8"));
boolean verify = signature2.verify(signed);
return verify;
} catch (Exception e) {
return false;
}
}
SHA256withECDSA验签
public static boolean verifySign(String _data, String _key, String _sign) {
try {
java.security.spec.X509EncodedKeySpec bobPubKeySpec = new java.security.spec.X509EncodedKeySpec(
new BASE64Decoder().decodeBuffer(_key));
KeyFactory keyf = KeyFactory.getInstance("EC"); //ECC 可根据需求更改
PublicKey publicKey = keyf.generatePublic(bobPubKeySpec);
byte[] data = hexStringToBytes(_data);
byte[] sig = hexStringToBytes(_sign);
Signature signer = Signature.getInstance("SHA256withECDSA");
signer.initVerify(publicKey);
signer.update(data);
return (signer.verify(sig));
}
catch(Exception ex)
{
System.out.println(ex.getMessage());
return false;
}
转自:http://www.cnblogs.com/cxygg/p/9468653.html
MD5
SHA1
SHA256
SHA512 这4种本质都是摘要函数,不通在于长度 MD5 是 128 位,
SHA1
是 160 位 ,
SHA256
是 256 位,SHA512 是512 位。
SHA1
With
RSA
他的 核心算法是 先用
sha1
去摘要,然后使用
RSA
加密。但是 他在 ...
SHA1
安全哈希算法(Secure Hash Algorithm)主要适用于数字
签名
标准 (Digital Signature Standard DSS)里面定义的数字
签名
算法(Digital Signature Algorithm DSA)
RSA
是目前最有影响力的公钥加密算法,它能够抵抗到目前为止已知的绝大多数密码攻击,已被ISO推荐为公钥数据加密标准。
SHA1
With
RSA
:用SHA算...
I'm generating a key pair using the secp256k1 curve. Then I'm using the private key to sign a random String:byte[] content = "random string".getBytes();Signature dsa = Signature.getInstance("
SHA256
wit...
java
MD5With
RSA
算法
首先我们来看
Java
中的 MD5with
RSA
签名
JAVA
private static final String SIGNATURE_ALGORITHM = "MD5with
RSA
";
import
java
.security.KeyFactory;
import
java
.security.PrivateKey;
import
java
.securi...
写在文章中之前:网上当前很多关于jarsigner对APK
签名
的讲法,但是有些讲的很粗糙,有些还在就在在抄袭他人的文章,而自己却没有去验证是否正确。
一、由于自己在工作中要用到jarsigner对apk进行最后的发布
签名
,所以自己也去看了一下具体怎么搞,不足之处欢迎读者指出,在此感谢杨立先生的指导。
二、关于jarsigner的具体介绍请查阅:http://docs.oracle.com/ja
一、
ECDSA
概述
椭圆曲线数字
签名
算法(
ECDSA
)是使用椭圆曲线密码(ECC)对数字
签名
算法(DSA)的模拟。
ECDSA
于1999年成为ANSI标准,并于2000年成为IEEE和NIST标准。它在1998年既已为ISO所接受,并且包含它的其他一些标准亦在ISO的考虑之中。与普通的离散对数问题(discrete logarithm problem DLP)和大数分解问题(inte...
//验证
签名
$algo = "
SHA256
";
// 304402205E4799D8E8199184FB7613000781EE5D7AE2E27121733E8B391FD33C51BD80C7022039EAF55B1C3958F39764D64EC18945E1...
Java
实现 ECC 非对称加密算法加解密和
签名
验签前言一、ECC 椭圆曲线算法简介二、ECC 加解密代码实例1.生成 ECC 密钥2.ECC 加解密3.测试代码三、ECC
签名
验签代码实例1. ECC
签名
验签2. 测试代码
文章字数比较多,可直接查看代码:源码地址,文中描述有误的地方欢迎各位大神指导。
一、ECC 椭圆曲线算法简介
ECC是椭圆曲线算法,其加密算法叫ECIES,
签名
算法叫
ECDSA
。JDK 并不支持 ECC 算法,可以引入 BouncyCastle 库使用。ECC算法相当耗费资源
签名
的概念
目的: 为了确认某个信息确实是由某个发送方发送的,或者某个发布内容确实是由发送方发布的,任何人都不可能伪造消息,并且,发送方也不能抵赖。
方法: 对发布的信息内容,通过某种可靠的加工(比如进行MD5运算),生成
签名
标识(字符串序列或者证书之类)
验证: 任何人拿到发布的信息内容后,可以通过同样的加工,得出
签名
标识,如果比对和发布者公布的
签名
一致,则验证为真。
签名
与加密区别: 加密是为了不让别人知道原来的信息,
签名
是为了保证大家获取到的原来的信息是没有经过改动的。
签名
算法
1、MD5