如何使用Java存储公钥mysql?
我需要在MySQL数据库中存储公钥。我有以下资料:如何使用Java存储公钥mysql?,java,mysql,Java,Mysql,我需要在MySQL数据库中存储公钥。我有以下资料: rsaModulus=rsaPk.getModulus(); 方法getmodule()返回BigInt。但是,当我使用preparedstatement在表中插入值时,我找不到合适的方法(即,类似于toString,toInt)。我需要检索这个公钥,然后做一些数学计算。这就是为什么,我认为将其存储为字符串不是一个好主意。此外,toLong不起作用,因为数据库中的字段定义为BigInt。这个问题有什么解决方案吗???这个线程使用BLOB有一
rsaModulus=rsaPk.getModulus();
方法
getmodule()
返回BigInt。但是,当我使用preparedstatement
在表中插入值时,我找不到合适的方法(即,类似于toString
,toInt
)。我需要检索这个公钥,然后做一些数学计算。这就是为什么,我认为将其存储为字符串不是一个好主意。此外,toLong
不起作用,因为数据库中的字段定义为BigInt。这个问题有什么解决方案吗???这个线程使用BLOB有一个有趣的解决方法
也许你可以用它
注:下一次,首先搜索:)文件,如密钥和证书,通常存储为bite数组。 这可以通过一个blob collumn来完成 Mysql文档展示了这些java类型和Mysql类型的关系: 如果您能够以字节[]形式获取公钥,请使用以下示例代码:
...
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();
...
哪个更好,将其存储在DB中作为Varbibnary或longblob?
pstat.setString(1,pkBytes)代码>不起作用。pkBytes是字节数组,不是字符串。我不知道为什么要使用输入流。如果我不想使用文件怎么办?我将该值存储在变量中,并希望将其直接存储为Blob。我不能这样做吗?在Java中将公钥定义为byte[],MySQL DB中的Blob解决了这个问题。除此之外,在您的解决方案中,您从文件中读取值,而我不需要它,因为公钥已经存储在变量中。我只需要转换类型。你说得对,“pstat.setString(1,pkBytes);”不起作用,我从其他地方复制了部分代码,对其进行了一点更改,但没有测试。在这种情况下,我使用InputStreat作为一个例子,如果您已经有了“byte[]”,那么就没有必要了。