如何使用Java存储公钥mysql?

时间:2012-07-10 20:25:25

标签: java mysql

我需要在MySQL DB中存储公钥。我有以下内容:

 rsaModulus=rsaPk.getModulus();

方法getModulus()返回BigInt。但是,当我使用preparedstatement来在表中插入值时,我找不到相应的方法来执行此操作(即,类似于toStringtoInt)。我需要检索此公钥并稍后进行一些数学计算。这就是为什么,我不认为将它存储为String是一个好主意。此外,toLong不起作用,因为DB中的字段被定义为BigInt。有没有解决这个问题的方法?

2 个答案:

答案 0 :(得分:0)

这个帖子使用BLOB有一个有趣的解决方法。

Store BigInteger into Mysql

也许你可以使用它。

PS。下次,首先搜索SO:)

答案 1 :(得分:0)

文件(如密钥和证书)通常存储为咬合数组。 这可以通过blob collumn来完成。

Mysql doc显示了这些java类型和mysql类型的关系: http://dev.mysql.com/doc/refman/5.0/en/connector-j-reference-type-conversions.html

如果您能够将公钥作为byte [],请使用以下示例代码:

...
   InputStream is = PapelServiceTest.class.getResourceAsStream("MY_FILE_HERE");
   byte[] pkBytes = IOUtils.toByteArray(is);

   String query = "INSERT INTO my_table (my_key_col) VALUES (?)";
   PreparedStatement pstat = conn.prepareStatement(query);
   pstat.setBytes(1, pkBytes);
   pstat.execute();
...