我的任务是在 Oracle 中创建包含加密字符串的数据库表(即列是 RAW)。字符串由应用程序加密(使用 AES,128 位密钥)并存储在 Oracle 中,然后从 Oracle 检索并解密(即,Oracle 本身永远不会看到未加密的字符串)。
我遇到了这一列,它将是两个字符串之一。我担心有人会注意到并大概弄清楚这两个值是什么来找出 AES 密钥。
例如,如果有人看到该列是 Ciphertext #1 或 #2:
密文#1:
BF,4F,8B,FE, 60,D8,33,56, 1B,F2,35,72, 49,20,DE,C6.
密文#2:
BC,E8,54,BD, F4,B3,36,3B, DD,70,76,45, 29,28,50,07.
并知道相应的明文:
明文#1(“底特律”):
44,00,65,00, 74,00,72,00, 6F,00,69,00, 74,00,00,00.
明文#2(“芝加哥”):
43,00,68,00, 69,00,63,00, 61,00,67,00, 6F,00,00,00.
他能推断出加密密钥是“Buffalo”吗?
42,00,75,00, 66,00,66,00, 61,00,6C,00, 6F,00,00,00.
我在想应该只有一个 128 位密钥可以将明文#1 转换为密文#1。这是否意味着我应该转而使用 192 位或 256 位密钥,或者寻找其他解决方案?
(顺便说一句,这里有另外两个相同明文但密钥不同的密文。)
密文#1 A(“底特律”):
E4,28,29,E3, 6E,C2,64,FA, A1,F4,F4,96, FC,18,4A,C5.
密文#2 A(“芝加哥”):
EA,87,30,F0, AC,44,5D,ED, FD,EB,A8,79, 83,59,53,B7.
[相关问题:使用AES和CBC时,IV可以是明文的哈希吗?]