Java 在mysql中存储和检索DSA公钥和私钥

Java 在mysql中存储和检索DSA公钥和私钥,java,mysql,Java,Mysql,我必须在我的项目中使用DSA(数字签名算法),使用Java实现。我有一个问题,我不能存储DSA的公钥和私钥(公钥和私钥类型)。当我将其存储为blob时,无法检索到其形式(即PublicKey)。有人能帮我吗 KeyPairGenerator pairgen = KeyPairGenerator.getInstance("DSA"); SecureRandom random = new SecureRandom(); pairgen.initialize(KEYSIZE, random); Key

我必须在我的项目中使用DSA(数字签名算法),使用Java实现。我有一个问题,我不能存储DSA的公钥和私钥(公钥和私钥类型)。当我将其存储为blob时,无法检索到其形式(即PublicKey)。有人能帮我吗

KeyPairGenerator pairgen = KeyPairGenerator.getInstance("DSA");
SecureRandom random = new SecureRandom();
pairgen.initialize(KEYSIZE, random);
KeyPair keyPair = pairgen.generateKeyPair();
PublicKey pu=keyPair.getPublic();

我必须将其存储起来,并且必须使用
pu.getEncoded()
检索它,并将其存储为
byte[]

要还原到PublicKey对象,请加载字节数组并进行以下调用

KeyFactory kf = KeyFactory.getInstance("DSA");
PublicKey pu = kf.generatePublic(new X509EncodedKeySpec(keyBytes));

您还可以选择使用base64对其进行编码。

使用varchar时,
varchar
列数据太长有什么问题。1) 如何在Java运行时外部存储为公钥?(提示:作为字节)2)如何从
公钥
获取
字节[]
?3) 如何在数据库中保存
字节[]
?4) 如何从数据库中加载
字节[]
?5) 如何从
字节[]
获取
公钥?这些是步骤,所以请编辑问题,并询问困扰您的具体问题。或者更好的方法是,一旦你在脑海中更清楚地知道你在寻找什么,就在线搜索它。如果公钥是以byte[]形式存储的,我如何将其转换为公钥类型。它可以作为byte检索,也可以转换为string。但无法转换为公钥类型。对象pu=keyPair.getPublic();公钥pk=(公钥)pu;它也很好,所以我尝试将pu存储为object,并作为object检索:objectobj=(object)rs.getObject(“pu”);公钥p=(公钥)obj;但它不起作用,无法将字符串转换为PublcKey。