Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用Java存储公钥mysql?_Java_Mysql - Fatal编程技术网

如何使用Java存储公钥mysql?

如何使用Java存储公钥mysql?,java,mysql,Java,Mysql,我需要在MySQL数据库中存储公钥。我有以下资料: rsaModulus=rsaPk.getModulus(); 方法getmodule()返回BigInt。但是,当我使用preparedstatement在表中插入值时,我找不到合适的方法(即,类似于toString,toInt)。我需要检索这个公钥,然后做一些数学计算。这就是为什么,我认为将其存储为字符串不是一个好主意。此外,toLong不起作用,因为数据库中的字段定义为BigInt。这个问题有什么解决方案吗???这个线程使用BLOB有一

我需要在MySQL数据库中存储公钥。我有以下资料:

 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[]”,那么就没有必要了。