我必须在我的项目中使用DSA(数字签名算法),使用Java实现。我有一个问题,我无法存储DSA的公钥和私钥(类型为PublicKey& PrivateKey)。当我将其存储为blob时,无法检索到其形式(即。,PublicKey)。任何人都可以帮助我吗?
KeyPairGenerator pairgen = KeyPairGenerator.getInstance("DSA");
SecureRandom random = new SecureRandom();
pairgen.initialize(KEYSIZE, random);
KeyPair keyPair = pairgen.generateKeyPair();
PublicKey pu=keyPair.getPublic();
我必须存储它并且必须检索
答案 0 :(得分:0)
使用byte[]
将其存储为pu.getEncoded()
。
要恢复到PublicKey对象,请加载字节数组并进行以下调用
KeyFactory kf = KeyFactory.getInstance("DSA");
PublicKey pu = kf.generatePublic(new X509EncodedKeySpec(keyBytes));
您也可以选择使用base64进行编码。