javarsa私钥加密

author author     2023-03-28     416

关键词:

参考技术A java rsa私钥加密是什么?让我们一起来了解一下吧!

java rsa私钥加密是一种加密算法。私钥加密算法是用私钥来进行加密与解密信息。私钥加密也被称作对称加密,原因是加密与解密使用的秘钥是同一个。

RSA加密需要注意的事项如下:

1. 首先产生公钥与私钥

2. 设计加密与解密的算法

3. 私钥加密的数据信息只能由公钥可以解密

4. 公钥加密的数据信息只能由私钥可以解密

实战演练,具体步骤如下: public class RsaCryptTools      private static final String CHARSET = "utf-8";     private static final Base64.Decoder decoder64 = Base64.getDecoder();     private static final Base64.Encoder encoder64 = Base64.getEncoder();       /**      * 生成公私钥      * @param keySize      * @return      * @throws NoSuchAlgorithmException      */     public static SecretKey generateSecretKey(int keySize) throws NoSuchAlgorithmException          //生成密钥对         KeyPairGenerator keyGen = KeyPairGenerator.getInstance("RSA");         keyGen.initialize(keySize, new SecureRandom());         KeyPair pair = keyGen.generateKeyPair();         PrivateKey privateKey = pair.getPrivate();         PublicKey publicKey = pair.getPublic();         //这里可以将密钥对保存到本地         return new SecretKey(encoder64.encodeToString(publicKey.getEncoded()), encoder64.encodeToString(privateKey.getEncoded()));          /**      * 私钥加密      * @param data      * @param privateInfoStr      * @return      * @throws IOException      * @throws InvalidCipherTextException      */     public static String encryptData(String data, String privateInfoStr) throws IOException, InvalidKeySpecException, NoSuchAlgorithmException, InvalidKeyException, NoSuchPaddingException, BadPaddingException, IllegalBlockSizeException            Cipher cipher = Cipher.getInstance("RSA/ECB/PKCS1Padding");         cipher.init(Cipher.ENCRYPT_MODE, getPrivateKey(privateInfoStr));         return encoder64.encodeToString(cipher.doFinal(data.getBytes(CHARSET)));            /**      * 公钥解密      * @param data      * @param publicInfoStr      * @return      */     public static String decryptData(String data, String publicInfoStr) throws NoSuchPaddingException, NoSuchAlgorithmException, InvalidKeySpecException, InvalidKeyException, BadPaddingException, IllegalBlockSizeException, UnsupportedEncodingException          byte[] encryptDataBytes=decoder64.decode(data.getBytes(CHARSET));         //解密         Cipher cipher = Cipher.getInstance("RSA/ECB/PKCS1Padding");         cipher.init(Cipher.DECRYPT_MODE, getPublicKey(publicInfoStr));         return new String(cipher.doFinal(encryptDataBytes), CHARSET);          private static PublicKey getPublicKey(String base64PublicKey) throws NoSuchAlgorithmException, InvalidKeySpecException          X509EncodedKeySpec keySpec = new X509EncodedKeySpec(Base64.getDecoder().decode(base64PublicKey.getBytes()));         KeyFactory keyFactory = KeyFactory.getInstance("RSA");         return keyFactory.generatePublic(keySpec);          private static PrivateKey getPrivateKey(String base64PrivateKey) throws NoSuchAlgorithmException, InvalidKeySpecException          PrivateKey privateKey = null;         PKCS8EncodedKeySpec keySpec = new PKCS8EncodedKeySpec(Base64.getDecoder().decode(base64PrivateKey.getBytes()));         KeyFactory keyFactory = null;         keyFactory = KeyFactory.getInstance("RSA");         privateKey = keyFactory.generatePrivate(keySpec);         return privateKey;            /**      * 密钥实体      * @author hank      * @since 2020/2/28 0028 下午 16:27      */     public static class SecretKey          /**          * 公钥          */         private String publicKey;         /**          * 私钥          */         private String privateKey;           public SecretKey(String publicKey, String privateKey)              this.publicKey = publicKey;             this.privateKey = privateKey;                    public String getPublicKey()              return publicKey;                    public void setPublicKey(String publicKey)              this.publicKey = publicKey;                    public String getPrivateKey()              return privateKey;                    public void setPrivateKey(String privateKey)              this.privateKey = privateKey;                    @Override         public String toString()              return "SecretKey" +                     "publicKey='" + publicKey + '\'' +                     ", privateKey='" + privateKey + '\'' +                     '';                     private static void writeToFile(String path, byte[] key) throws IOException          File f = new File(path);         f.getParentFile().mkdirs();           try(FileOutputStream fos = new FileOutputStream(f))              fos.write(key);             fos.flush();                     public static void main(String[] args) throws NoSuchAlgorithmException, NoSuchPaddingException, IOException, BadPaddingException, IllegalBlockSizeException, InvalidKeyException, InvalidKeySpecException          SecretKey secretKey = generateSecretKey(2048);         System.out.println(secretKey);         String enStr = encryptData("你好测试测试", secretKey.getPrivateKey());         System.out.println(enStr);         String deStr = decryptData(enStr, secretKey.getPublicKey());         System.out.println(deStr);         enStr = encryptData("你好测试测试hello", secretKey.getPrivateKey());         System.out.println(enStr);         deStr = decryptData(enStr, secretKey.getPublicKey());         System.out.println(deStr);       

javarsa加密,高并发如何解决

rsa通过公钥加密,通过私钥解密。但是问题来了,当上一个解密过程还没处理完之前,又有了一个新的请求,此时私钥已经存储的是最新请求的那个私钥了。那么上一个请求在解密时,取得私钥变成了最后一个请求的私钥。此时... 查看详情

javarsa实现私钥签名公钥验签私钥加密数据公钥解密数据

通过OpenSSL生成公私钥文件(如果没有OpenSSL工具建议下载Cmder工具自带OpenSSL指令)1、生成RSA密钥的方法  genrsa-outprivate-rsa.key20482、获取客户端公钥文件openssl req-new-x509-keyprivate-rsa.key-days750-outpublic-rsa.cer3、获取服务器私... 查看详情

javarsa非对称加密详解(代码片段)

一、概述1.RSA是基于大数因子分解难题。目前各种主流计算机语言都支持RSA算法的实现2.java6支持RSA算法3.RSA算法可以用于数据加密和数字签名4.RSA算法相对于DES/AES等对称加密算法,他的速度要慢的多5.总原则:公钥加密... 查看详情

javarsa加密解密代码范例(byte[]版)(代码片段)

具体代码:packagetsoffice;importjavax.crypto.Cipher;importjava.security.KeyPair;importjava.security.KeyPairGenerator;importjava.security.NoSuchAlgorithmException;importjava.security.PrivateKey;impor 查看详情

javarsa加密解密代码范例(base64版)(代码片段)

测试通过:packagetso.system.cdkey;importjavax.crypto.Cipher;importjava.security.KeyFactory;importjava.security.KeyPair;importjava.security.KeyPairGenerator;importjava.security.NoSuchAlgorithmExcepti 查看详情

javarsa解密

之前在EXT页面中做了数据加密,如图截图中的加密数据为C535AD4F2E753F29CE1118EDB8B7913FB96C145FC21A1E9BA991F35512B8562F571AC62BD6CCEC1024F7FF2E7675B9D3D20FC13B14B43DBCBFDF798F905F5926E2BCCCA7D3D952A2B215AE7D41F626882107BD871A3BE6D285FA4937026FA9FA0C53E6B8CE1117EC0DD7F224ED487EB9B... 查看详情

delphirsa加解密(rsa公钥加密,私钥解密)(rsa私钥加密,公钥解密)md5加密sha加密

作者QQ:(648437169)delphiRSA加解密【DelphiRSA加解密】支持(RSA公钥加密,私钥解密)、(RSA私钥加密,公钥解密)、MD5加密、SHA1加密、SHA224加密、SHA256加密、SHA384加密、SHA512加密 查看详情

AES加密,啥是公钥和私钥?

】AES加密,啥是公钥和私钥?【英文标题】:AESencryption,whatarepublicandprivatekeys?AES加密,什么是公钥和私钥?【发布时间】:2010-09-2108:45:27【问题描述】:在AES加密(.net框架)中,如何使用公钥和私钥?是不是把公钥和私钥组合... 查看详情

转公钥加密还是私钥加密

RSA的公钥和私钥到底哪个才是用来加密和哪个用来解密? 不要去硬记。你只要想:既然是加密,那肯定是不希望别人知道我的消息,所以只有我才能解密,所以可得出公钥负责加密,私钥负责解密;同理,既然是签名,那肯... 查看详情

rsa非对称加密,私钥用于签名公钥用于验签;公钥用于加密私钥用于解密

公钥和私钥在一些银行系统、第三方支付系统SDK中经常会遇到,刚接触公钥私钥的朋友们估计很难区分两者的区别。RSA公钥和私钥是什么?首先来说,RSA是一种非对称加密算法,它是由三位数学家(Rivest、Shamir、Adleman)设计出... 查看详情

加密解密公钥私钥

密码学扫盲:加密、认证、公钥、私钥 哪个用来加密哪个用来解密? 查看详情

java中rsa用私钥加密公钥解密问题

请教各位大侠:要实现一个功能,已知公钥(e,n),私钥(d,n),要求使用私钥对MD5生成的128位文字摘要进行加密,公钥解密,网上资料多数都是公钥加密,私钥解密,而且公私钥都直接来自文件,而这个需求是给出了公钥和私钥的三... 查看详情

非对称加密算法(公钥和私钥)

...密钥(publickey,简称公钥)和私有密钥(privatekey,简称私钥)。  公钥(PublicKey)与私钥(PrivateKey)是通过一种算法得到的一个密钥对(即一个公钥和一个私钥),公钥是密钥对中公开的部分,私钥则是非公开的部分。公钥... 查看详情

rsa公钥加密,私钥解密,私钥加签,公钥验签(代码片段)

RSA是一种使用非对称加密的算法,公钥加密,私钥解密,私钥加签,公钥验签,加密是为了防止信息被泄露,而签名是为了防止信息被篡改。packagecom.qt.rsautil;importjava.security.KeyFactory;importjava.security.KeyPair;importjava.security.KeyPairGenerato... 查看详情

无法使用 openssl 加密私钥

】无法使用openssl加密私钥【英文标题】:Unabletoencryptprivatekeyusingopenssl【发布时间】:2019-08-1518:20:47【问题描述】:我已经使用openssh生成了Rsa密钥对。我想使用openssl使用密码加密私钥。我尝试使用openssl加密私钥,但无法这样做... 查看详情

用于加密的公钥;用于解密的私钥?

】用于加密的公钥;用于解密的私钥?【英文标题】:publickeyforencryption;privatekeyforde-cryption?【发布时间】:2011-07-2422:50:06【问题描述】:我了解私钥和公钥在数学上是相关的,用一个密钥加密的数据只能用另一个密钥解密。我的... 查看详情

带有私钥加密的公钥加密

】带有私钥加密的公钥加密【英文标题】:PublicKeyCryptowithPrivateKeyEncryption【发布时间】:2013-04-0601:05:43【问题描述】:我正在尝试在C#中实现以下内容:我想要一个内部包含公钥加密例程的生成器。它可以接受提供给它的字节数... 查看详情

在 iOS 上使用私钥加密数据

】在iOS上使用私钥加密数据【英文标题】:EncryptingdatawithaprivatekeyoniOS【发布时间】:2011-07-1510:51:30【问题描述】:我在“证书、密钥和信任服务编程指南”中找到了有关使用公钥加密数据的示例。但是如何使用私钥加密并使用... 查看详情