gpt4 book ai didi

java - Derby/JavaDB _真的_可以使用 Triple DES 而不是(普通的)DES 进行加密吗?

转载 作者:搜寻专家 更新时间:2023-10-31 19:51:01 25 4
gpt4 key购买 nike

它似乎混淆了 Triple-DES(>128 位)和普通 DES(64 位)。我正在尝试使用 Java 1.5 使用 Triple DES(或 DESede)加密 Derby 数据库

我找到了这个 discussion forum message about a problem with JDK 1.5偶然,所以检查以确保它确实使用了 DESede 而不是普通的 DES。当我使用三重 DES(168 位)URL 创建数据库时

jdbc:derby:MySecureDB;dataEncryption=true;encryptionAlgorithm=DESede/CBC/NoPadding;bootPassword=$ecureC@deCanBr@kE0074242

我仍然能够打开它并使用(普通)DES(64 位)URL 访问它

jdbc:derby:MySecureDB;dataEncryption=true;encryptionAlgorithm=DES/CBC/NoPadding;bootPassword=$ecureC@deCanBr@kE0074242

这不是我期望的行为!!!我应该无法使用错误的加密算法打开它。我如何才能确保它确实使用正确的(>128 位)算法对其进行了加密?

Derby 似乎使用了 JCECipherProvider.java 中提到的适用于 Java 1.5 的正确函数.我对代码的阅读表明 Derby 处理三重 DES 的方式与普通 DES 不同...我真的可以相信它使用的是强加密吗?

最佳答案

我认为文档是错误的,并且当使用非默认算法时您实际上不需要指定要使用的加密算法,因为应该使用的算法在 $DERBY_HOME/database/service 中指定。属性

就我而言,当我使用您的参数创建数据库时,我的 service.properties 具有以下内容(以及其他不相关的条目):

log_encrypt_algorithm_version=1
encryptionAlgorithm=DESede/CBC/NoPadding
dataEncryption=true
derby.encryptionBlockSize=8
encryptionKeyLength=168-24
encryptedBootPassword=472b7cc5600605333392dd10a46067d2e2935fd4c350d533-43435
data_encrypt_algorithm_version=1

您可以通过更改所使用的算法来验证它是否已被使用。如果将该文件中的指定算法更改为 DES,则您将无法重新启动数据库。

例如:

$ ../bin/ij
ij version 10.4
ij> connect 'jdbc:derby:testdb;create=true;dataEncryption=true;encryptionAlgorithm=Blowfish/ECB/NoPadding;bootPassword=$ecureC@deCanBr@kE0074242';
ij> quit;
$ sed -i .o 's/Blowfish/DES/' testdb/service.properties
$ ../bin/ij
ij version 10.4
ij> connect 'jdbc:derby:testdb;bootPassword=$ecureC@deCanBr@kE0074242';
ERROR XJ040: Failed to start database 'testdb', see the next exception for details.
ERROR XBM06: Startup failed. An encrypted database cannot be accessed without the correct boot password.
ij> quit;
$ sed -i .o 's/DES/Blowfish/' testdb/service.properties
$ ../bin/ij
ij version 10.4
ij> connect 'jdbc:derby:testdb;bootPassword=$ecureC@deCanBr@kE0074242';
ij> quit;
$

关于java - Derby/JavaDB _真的_可以使用 Triple DES 而不是(普通的)DES 进行加密吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1925134/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com