Java 签名(SHA1WithRSA、SHA256WithRSA、SHA256withECDSA)

摘要:
RSA1,RSA256签名1publicstaticStringMakeSign(StringData){23try{4byte[]data=data.getBytes();5byte[]keyBytes=base64String2Byte(PrivateKey);67PKCS8EncodedKeySpec pkcs8KeySpec=newPKCS8Encode KeySpec(keyBytes);

RSA1、RSA256 签名

 1  public static String MakeSign(String Data) {
 2 
 3     try {
 4       byte[] data = Data.getBytes();
 5       byte[] keyBytes = base64String2Byte(PrivateKey);
 6 
 7       PKCS8EncodedKeySpec pkcs8KeySpec = new PKCS8EncodedKeySpec(keyBytes);
 8 
 9       KeyFactory keyFactory = KeyFactory.getInstance("RSA");
10 
11       PrivateKey priKey = keyFactory.generatePrivate(pkcs8KeySpec);
12     
13       Signature signature = Signature.getInstance("SHA256withRSA");//这个根据需求填充SHA1WithRSA或SHA256WithRSA
14       signature.initSign(priKey);
15       signature.update(data);
16 
17       return byte2Base64String(signature.sign());
18     } catch (Exception e) {
19       return "";
20     }
21   }
1 // base64字符串转字节数组
2   public static byte[] base64String2Byte(String base64Str) {
3     return Base64.decodeBase64(base64Str);
4   }

RSA1、RSA256 验签

 1     public static boolean VeriSign(String Data_ori, String Singnature) {
 2       try {
 3         byte[] signed = base64String2Byte(Singnature);
 4       
 5         X509EncodedKeySpec keySpec = new X509EncodedKeySpec(base64String2Byte(PublicKey));
 6         KeyFactory keyFactory = null;
 7         keyFactory = KeyFactory.getInstance("RSA");
 8         PublicKey publicKey = keyFactory.generatePublic(keySpec);
 9 
10         Signature signature2 = Signature.getInstance("Sha256WithRSA");//这个根据需求填充SHA1WithRSA或SHA256WithRSA
11         signature2.initVerify(publicKey);
12         signature2.update(Data_ori.getBytes("UTF-8"));
13         boolean verify = signature2.verify(signed);
14         return verify;
15       } catch (Exception e) {
16         return false;
17       }
18   }

SHA256withECDSA验签

 1  public static boolean verifySign(String _data, String _key, String _sign) {
 2 
 3         try {
 4             java.security.spec.X509EncodedKeySpec bobPubKeySpec = new java.security.spec.X509EncodedKeySpec(
 5                     new BASE64Decoder().decodeBuffer(_key));
 6             KeyFactory keyf = KeyFactory.getInstance("EC"); //ECC 可根据需求更改
 7             PublicKey publicKey = keyf.generatePublic(bobPubKeySpec);
 8 
 9             byte[] data = hexStringToBytes(_data);
10             byte[] sig = hexStringToBytes(_sign);
11 
12             Signature signer = Signature.getInstance("SHA256withECDSA");
13             signer.initVerify(publicKey);
14             signer.update(data);
15             return (signer.verify(sig));
16         }
17         catch(Exception ex)
18         {
19             System.out.println(ex.getMessage());
20             return false;
21         }
Java 签名(SHA1WithRSA、SHA256WithRSA、SHA256withECDSA)第1张Java 签名(SHA1WithRSA、SHA256WithRSA、SHA256withECDSA)第2张
 1  public static String bytesToHexString(byte[] src) {
 2         StringBuilder stringBuilder = new StringBuilder("");
 3         if (src == null || src.length <= 0) {
 4             return null;
 5         }
 6         for (int i = 0; i < src.length; i++) {
 7             int v = src[i] & 0xFF;
 8             String hv = Integer.toHexString(v);
 9             if (hv.length() < 2) {
10                 stringBuilder.append(0);
11             }
12             stringBuilder.append(hv);
13         }
14         return stringBuilder.toString();
15     }
16 
17     public static byte[] hexStringToBytes(String hexString) {
18         if (hexString == null || hexString.equals("")) {
19             return new byte[0];
20         }
21         hexString = hexString.toUpperCase();
22         int length = hexString.length() / 2;
23         char[] hexChars = hexString.toCharArray();
24         byte[] d = new byte[length];
25         for (int i = 0; i < length; i++) {
26             int pos = i * 2;
27             d[i] = (byte) (charToByte(hexChars[pos]) << 4 | charToByte(hexChars[pos + 1]));
28         }
29         return d;
30     }
31 
32     public static byte charToByte(char c) {
33         return (byte) "0123456789ABCDEF".indexOf(c);
34     }
HEX和Byte[]互转

免责声明:文章转载自《Java 签名(SHA1WithRSA、SHA256WithRSA、SHA256withECDSA)》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇springmvc之文件上传、下载NIO:Buffer 详解下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

linux sftp连接报错:JSchException: Algorithm negotiation fail解决方案

1、解决方法1,将jsch的jar包升级到最新 2、在、/etc/ssh/sshd_config文件中最后添加一行秘钥: KexAlgorithms curve25519-sha256@libssh.org,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-gro...

PHP 之sha256 sha512封装

PHP 之sha256 sha512封装/* PHP sha256 sha512目前(PHP 7.1)没有内置的函数来计算,sha1() sha1_file() md5() md5_file()分别可以用来计算字符串和文件的sha1散列值和md5散列值,当前最新版本PHP 7.1 sha256() sha256_file() sha512() sha512...

用户密码加密存储十问十答,一文说透密码安全存储

我们数据库的权限管理十分严格,敏感信息开发工程师都看不到,密码明文存储不行吗? 不行。存储在数据库的数据面临很多威胁,有应用程序层面、数据库层面的、操作系统层面的、机房层面的、员工层面的,想做到百分百不被黑客窃取,非常困难。 如果密码是加密之后再存储,那么即便被拖库,黑客也难以获取用户的明文密码。可以说,密码加密存储是用户账户系统的底裤,它的重要性,相当于...

Qt之OpenSSL

简述 OpenSSL是一个强大的安全套接字层密码库,囊括主要的密码算法、常用的密钥和证书封装管理功能及SSL协议,并提供丰富的应用程序供测试或其它目的使用。 简述 下载安装 使用 更多参考 下载安装 进入Win32 OpenSSL下载页面,选择适合自己的版本进行下载。 下载完成之后进行安装,我选择的目录为D:Program FilesOpenSSL-...

SHA256算法介绍

扒一扒密码学的前世今生 二战结束以后,密码学在相当长的一段时间内都像军火一样被各国政府严密看管。美国国家安全局(NSA)雇佣了一大批密码学家在五角大楼内研究最前沿的密码学,严令禁止技术出口及民用。 1972年,IBM研制出了对称密码体制加密算法。 1975年美国国家标准局将对称密码体制加密算法颁布为国家标准,称为数据加密标准DES。DES的公布,也促使了大...

文件 MD5 SHA1 SHA256 SHA512 校验码生成工具 V1.3

【程序介绍】免费开源的 文件 MD5 SHA1 SHA256 SHA512 校验码生成工具 V1.3 这是一个有意思的程序,同一个程序,即是图形程序,又是命令行程序。程序作用:输入一个文件的路径,输出这个文件的校验码(md5值或sha1值)。 http://files.cnblogs.com/piapia/get-hash1.3.rar 【程序用法】get...