- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我需要使用 16 字节数组 key Material 在 Java 中创建双倍长度 3DES key ,用它加密消息并取回 16 字节长度数组。我可以让它使用 24 字节,但不能使用 16 字节...
因为 DESede 需要 24 字节 [],这是生成具有 16 字节长 key Material 的双倍长度 3DES key 的唯一方法,所以我能够通过使用 DESede 实例,然后通过在end 获取 24 字节。就像这样:
byte[] keyMaterial = // Assume this one is 16 bytes.
byte[] newKeyBytes = ByteBuffer.wrap( new byte[ 24 ] )
.put( Arrays.copyOfRange( keyMaterial, 0, 16 ) )
.put( Arrays.copyOfRange( keyMaterial, 0, 8 ) )
.array();
SecretKeyFactory mySecretKeyFactory = SecretKeyFactory.getInstance( "DESede" );
KeySpec myKeySpec = new DESedeKeySpec( newKeyBytes );
SecretKey encryptionKey = mySecretKeyFactory.generateSecret( myKeySpec );
现在,当我拥有 DESede key 时,我可以使用它按以下方式加密消息。另外,我需要使用“ECB”模式:
Cipher cipher = Cipher.getInstance( "DESede/ECB/PKCS5Padding" );
cipher.init( Cipher.ENCRYPT_MODE, encryptionKey );
byte[] returnValue = cipher.doFinal( dataToEncrypt )
但结果我得到的是 24 字节数组而不是 16 字节数组,我想这是因为我正在使用 24 字节数组进行加密。
有没有办法创建一个 16 字节长而不是 24 字节长的 3DES SecretKey,或者当使用 24 字节长 SecretKey 加密时,根据需要取回 16 字节长的加密消息而不是 24 字节长?
谢谢!
最佳答案
我想我刚刚找到了问题的答案。
https://docs.oracle.com/javase/7/docs/api/javax/crypto/Cipher.html
我使用了 DESede/ECB/NoPadding,当与 NoPadding 一起使用时,然后使用 24 字节 SecretKey 加密 16 字节数组消息会生成一个 16 字节长的密码消息,这正是我所需要的。
我希望这个发现是正确的。如果我错了,请纠正我。
关于java - 使用 Java 中的双倍长度 3DES key 进行加密并生成 16 字节数组密码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45352262/
我有三个 double 组列表。我想将数组1复制到数组2并将其放入第三个数组中。 // ArrayList 1 [0.0, 1.0, 0.0, 1.0] // ArrayList 2 // Rando
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the
我正在编写一个带有变量 long balance 的银行程序将美分存入账户。当用户输入金额时,我有一种方法可以将美元转换为美分: public static long convertFromUsd (
如何 DRY(不要重复自己)RSpec 中的 double?例如: let(:s1) {instance_double(Class1, :att
我是 Java 新手,我想知道为什么当你有双 10/4 时却得到 2? double 是否总是必须有小数才能得到正确的答案?谢谢。 public class Super { public st
我正在用 Python 为 Fortran 库编写前端。 Python 模块应该可以在 32 位和 64 位机器上运行;适用于 Windows、Linux 和 Mac。 我想了解一些数据类型的字节宽度
我有两个ajax json。一个用于聊天用户列表列,另一个用于每个用户的消息历史记录。当单击 $('.member_list ul li') 元素时...第二个 ajax 将 li 的值作为 json
从 GHCi 中的 .hs 文件加载 a = 2+2.0 并执行 :t a 显示 a::Double。 另一方面,在 GHCi 中执行 let b = 2+2.0 和 :t b 会显示 b::Frac
我是一名优秀的程序员,十分优秀!