java的RSA私匙和公匙如何在ASP.NET中转过来,java的私匙和公匙是字符串,ASP.NET的是XML。

java的RSA私匙和公匙如何在ASP.NET中转过来,java的私匙和公匙是字符串,ASP.NET的是XML。,第1张

或许你可以换个思路 ,还是用java 写加密,签名,验签

然后用IKVMNET将java包转成C# dll

aspnet 直接调用这个dll 就是了

这样就不用将java 的私匙和公匙转成C#的了

我当时做一个项目就是采用的这个方法来规避 java 和 C# 在 RSA 上的不同

要直接进行java 和net交互比较难,因为net的非对称加密很好没有实现ASN1,而且net 在实现的时候 加了随机数

1、用公钥加密,用私钥解密。

2、给别人发信息,就从服务器上拉下来别人的公钥,加密后发给他。

3、对方拿到信息后用自己的私钥解密。

4、这样,公钥加密后除了私钥持有人,别人都看不到信息。

5、若是用私钥加密,那么公钥都能解密,还有何安全性可言?

6、私钥加密的场合只有一个,那就是数字签名,用来表明这个信息来源于你。

1私钥公钥不是用户自己输入的,是RSA算法自动生成的,而你输入的密码只是打开那个文件或生成的证书的密码

2密码为“changeit”,而如果尝试几次都不成功的话,就到$JAVA_HOME\jre\lib\security\目录下去配就可以了

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

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

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

1 首先产生公钥与私钥

2 设计加密与解密的算法

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

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

实战演练,具体步骤如下: public class RsaCryptTools {     private static final String CHARSET = "utf-8";     private static final Base64Decoder decoder64 = Base64getDecoder();     private static final Base64Encoder encoder64 = Base64getEncoder();       /       生成公私钥       @param keySize       @return       @throws NoSuchAlgorithmException      /     public static SecretKey generateSecretKey(int keySize) throws NoSuchAlgorithmException {         //生成密钥对         KeyPairGenerator keyGen = KeyPairGeneratorgetInstance("RSA");         keyGeninitialize(keySize, new SecureRandom());         KeyPair pair = keyGengenerateKeyPair();         PrivateKey privateKey = pairgetPrivate();         PublicKey publicKey = pairgetPublic();         //这里可以将密钥对保存到本地         return new SecretKey(encoder64encodeToString(publicKeygetEncoded()), encoder64encodeToString(privateKeygetEncoded()));     }     /       私钥加密       @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 = CiphergetInstance("RSA/ECB/PKCS1Padding");         cipherinit(CipherENCRYPT_MODE, getPrivateKey(privateInfoStr));         return encoder64encodeToString(cipherdoFinal(datagetBytes(CHARSET)));     }       /       公钥解密       @param data       @param publicInfoStr       @return      /     public static String decryptData(String data, String publicInfoStr) throws NoSuchPaddingException, NoSuchAlgorithmException, InvalidKeySpecException, InvalidKeyException, BadPaddingException, IllegalBlockSizeException, UnsupportedEncodingException {         byte[] encryptDataBytes=decoder64decode(datagetBytes(CHARSET));         //解密         Cipher cipher = CiphergetInstance("RSA/ECB/PKCS1Padding");         cipherinit(CipherDECRYPT_MODE, getPublicKey(publicInfoStr));         return new String(cipherdoFinal(encryptDataBytes), CHARSET);     }     private static PublicKey getPublicKey(String base64PublicKey) throws NoSuchAlgorithmException, InvalidKeySpecException {         X509EncodedKeySpec keySpec = new X509EncodedKeySpec(Base64getDecoder()decode(base64PublicKeygetBytes()));         KeyFactory keyFactory = KeyFactorygetInstance("RSA");         return keyFactorygeneratePublic(keySpec);     }     private static PrivateKey getPrivateKey(String base64PrivateKey) throws NoSuchAlgorithmException, InvalidKeySpecException {         PrivateKey privateKey = null;         PKCS8EncodedKeySpec keySpec = new PKCS8EncodedKeySpec(Base64getDecoder()decode(base64PrivateKeygetBytes()));         KeyFactory keyFactory = null;         keyFactory = KeyFactorygetInstance("RSA");         privateKey = keyFactorygeneratePrivate(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) {             thispublicKey = publicKey;             thisprivateKey = privateKey;         }           public String getPublicKey() {             return publicKey;         }           public void setPublicKey(String publicKey) {             thispublicKey = publicKey;         }           public String getPrivateKey() {             return privateKey;         }           public void setPrivateKey(String privateKey) {             thisprivateKey = 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);         fgetParentFile()mkdirs();           try(FileOutputStream fos = new FileOutputStream(f)) {             foswrite(key);             fosflush();         }     }       public static void main(String[] args) throws NoSuchAlgorithmException, NoSuchPaddingException, IOException, BadPaddingException, IllegalBlockSizeException, InvalidKeyException, InvalidKeySpecException {         SecretKey secretKey = generateSecretKey(2048);         Systemoutprintln(secretKey);         String enStr = encryptData("你好测试测试", secretKeygetPrivateKey());         Systemoutprintln(enStr);         String deStr = decryptData(enStr, secretKeygetPublicKey());         Systemoutprintln(deStr);         enStr = encryptData("你好测试测试hello", secretKeygetPrivateKey());         Systemoutprintln(enStr);         deStr = decryptData(enStr, secretKeygetPublicKey());         Systemoutprintln(deStr);     }   }

以上就是关于java的RSA私匙和公匙如何在ASP.NET中转过来,java的私匙和公匙是字符串,ASP.NET的是XML。全部的内容,包括:java的RSA私匙和公匙如何在ASP.NET中转过来,java的私匙和公匙是字符串,ASP.NET的是XML。、怎么在ios进行rsa公钥加密,java做rsa私钥解密、java使用keytool生成证书的时候怎们样设置公钥和私钥还有keystore密码是什么等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9430296.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-28
下一篇 2023-04-28

发表评论

登录后才能评论

评论列表(0条)

保存