1

我需要将公钥存储在我的 MySQL 数据库中。我有以下内容:

 rsaModulus=rsaPk.getModulus();

该方法getModulus() 返回 BigInt。但是,当我使用preparedstatement为了在表中插入值时,我找不到合适的方法来做到这一点(即,类似于toString, toInt)。我需要检索此公钥并稍后进行一些数学计算。这就是为什么,我认为将其存储为 String 不是一个好主意。此外,toLong由于数据库中的字段被定义为 BigInt,因此不起作用。这个问题有解决办法吗??

4

2 回答 2

0

该线程有一个使用 BLOB 的有趣解决方法。

将 BigInteger 存储到 Mysql 中

也许你可以使用它。

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

于 2012-07-10T20:35:52.943 回答
0

文件,如密钥和证书通常存储为一个比特数组。这可以通过 blob 列来完成。

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

如果您能够以字节 [] 的形式获取您的公钥,请使用如下示例代码:

...
   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();
...
于 2012-07-10T21:14:13.417 回答