gpt4 book ai didi

Java ANSI X923 填充

转载 作者:行者123 更新时间:2023-11-30 09:57:59 24 4
gpt4 key购买 nike

我有一个用 java 编写的新应用程序,需要从数据库中读取加密值。问题是数据库中的所有值都由使用 ANSI x923 填充方案的 .NET 代码加密。我做了一些研究,看起来 Java TripleDes 库没有指定此填充方案的方法。我想知道是否有人知道我是否正确并且 ANSI x923 在 Java 中不受支持,或者是否有办法让它工作。

最佳答案

如果您使用 Bouncy CaSTLe JCE,它支持 X923 填充。你可以这样得到密码(假设你使用 CBC 模式),

cipher = Cipher.getInstance("DESede/CBC/X9.23PADDING");

我认为 Sun 的 JCE 不支持它。但是你可以简单地解密它而不用填充并自己删除填充。对于 X9.23,最后一个字节是添加的填充数。所以你可以做这样的事情,

cipher = Cipher.getInstance("DESede/CBC/NOPADDING");
cipher.init(Cipher.DECRYPT_MODE, key, ivSpec);
int outSize = cipher.getOutputSize(cipherText.length);
plainText = new byte[outSize];
length = cipher.update(cipherText, plainText, 0);
cipher.doFinal(plainText, length);

//Remove padding
int newLen = plainText.length - (plainText[plainText.length-1] & 0xFF);
byte[] data = new byte[newLen];
System.arraycopy(plainText, 0, data, 0, newLen);

关于Java ANSI X923 填充,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1329730/

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