java - Java:键类型和字符串之间的转换
问题描述
是否可以获取我生成的公钥,将其转换为字符串,反转该过程并再次将其用作密钥?
generator = KeyPairGenerator.getInstance("RSA");
generator.initialize(2048);
KeyPair keyPair = generator.generateKeyPair();
RSAPublicKey publicKey = (RSAPublicKey) keyPair.getPublic();
RSAPrivateKey privateKey = (RSAPrivateKey) keyPair.getPrivate();
然后将其转换为字符串:
String public = someMethod(publicKey)
然后稍后将其反转:
RSAPublicKey newPublicKey = someMethod(public)
解决方案
您可以将公钥转换为字符串,如下所示。
String publicKeyString = Base64.getEncoder().encodeToString(publicKey.getEncoded());
然后可以将该字符串转换回公钥,如下所示。
byte[] publicKeyBytes = Base64.getDecoder().decode(publicKeyString);
X509EncodedKeySpec spec = new X509EncodedKeySpec(publicKeyBytes);
KeyFactory keyFactory = KeyFactory.getInstance("RSA");
PublicKey publicKey2 = keyFactory.generatePublic(spec);
推荐阅读
- vba - 如何用VBA重命名中文命名文件?
- c - 将字符串复制到 Clang 函数中的指针失败
- python - python 在使用 text_box.get() 时没有将 str 值转换为 int (在 Tkinter 中)
- java - 如何在@PrePersist 方法中获取类对象
- django - corss 域登录问题 sessionid cookie 未在 aws eb 上的 django-graphql 后端 api 中设置
- powershell - 如何根据使用 PowerShell 选择的文件夹自动创建复选框?
- sql - Oracle XMLtable 提供交叉连接的数据
- c# - 从 JavaScript 调用 .razor 页面中的实例方法
- javascript - 基于正则表达式的行删除脚本(JS)不起作用
- java - 有没有办法让 java.awt.Choice 进一步下拉?