- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我为我正在上的加密类(class)设置了一个程序。我将用我的代码和另一部分来说明我的变量差异。我的目标是解密我们作业的文本。我不希望有人为我解密此内容,但希望获得一些帮助来了解我的代码中导致此问题的原因。当我解密 CBC 时,我得到了正确的输出,没有任何问题,尽管它确实有一些额外的字符(这可能是填充问题?我不确定)
然后,当我使用 CTR 进行正确的更改时,它会返回一堆垃圾。任何帮助将不胜感激。谢谢,
CBC:
CBC key: 140b41b22a29beb4061bda66b6747e14
CBC Ciphertext 1:
4ca00ff4c898d61e1edbf1800618fb2828a226d160dad07883d04e008a7897ee2e4b7465d5290d0c0e6c6822236e1daafb94ffe0c5da05d9476be028ad7c1d81
点击率:
CTR key: 36f18357be4dbd77f050515c73fcf9f2
CTR Ciphertext 1:
69dda8455c7dd4254bf353b773304eec0ec7702330098ce7f7520d1cbbb20fc388d1b0adb5054dbd7370849dbf0b88d393f252e764f1f5f7ad97ef79d59ce29f5f51eeca32eabedd9afa9329
CBC 变量
String algorithm = "AES";
String mode = "CBC";
String padding = "PKCS5Padding";
byte[] ciphertextBytes = StringToByte("4ca00ff4c898d61e1edbf1800618fb2828a226d160dad07883d04e008a7897ee2e4b7465d5290d0c0e6c6822236e1daafb94ffe0c5da05d9476be028ad7c1d81");
byte[] keyBytes = StringToByte("140b41b22a29beb4061bda66b6747e14");
点击率变量
String algorithm = "AES";
String mode = "CTR";
String padding = "NoPadding";
byte[] ciphertextBytes = StringToByte("770b80259ec33beb2561358a9f2dc617e46218c0a53cbeca695ae45faa8952aa0e311bde9d4e01726d3184c34451");
byte[] keyBytes = StringToByte("36f18357be4dbd77f050515c73fcf9f2");
解密主要内容
import javax.crypto.Cipher;
import javax.crypto.SecretKey;
import javax.crypto.spec.IvParameterSpec;
import javax.crypto.spec.SecretKeySpec;
import java.security.SecureRandom;
import static java.lang.Character.digit;
public class CryptoClass {
public static void main(String[] args) throws Exception {
byte[] decryptByte = Decrypt();
String hexString = ByteToHex(decryptByte);
StringBuilder decryptedString = HexToString(hexString);
System.out.println(decryptedString);
}
public static byte[] Decrypt() throws Exception {
//
String algorithm = "AES";
String mode = "CTR";
String padding = "NoPadding";
byte[] ciphertextBytes = StringToByte("770b80259ec33beb2561358a9f2dc617e46218c0a53cbeca695ae45faa8952aa0e311bde9d4e01726d3184c34451");
byte[] keyBytes = StringToByte("36f18357be4dbd77f050515c73fcf9f2");
IvParameterSpec ivParamSpec = null;
int ivSize = 16;
byte[] iv = new byte[ivSize];
SecureRandom secureRandom = SecureRandom.getInstance("SHA1PRNG");
secureRandom.nextBytes(iv);
ivParamSpec = new IvParameterSpec(iv);
SecretKey aesKey = new SecretKeySpec(keyBytes, "AES");
Cipher cipher = Cipher.getInstance(algorithm + "/" + mode + "/" + padding, "JsafeJCE");
cipher.init(Cipher.DECRYPT_MODE, aesKey, ivParamSpec);
byte[] result = cipher.doFinal(ciphertextBytes);
return result;
}
//convert ByteArray to Hex String
public static String ByteToHex(byte[] byteArray) {
StringBuilder sb = new StringBuilder();
for (byte b : byteArray)
{
sb.append(String.format("%02X", b));
}
return sb.toString();
}
//convert String to ByteArray
private static byte[] StringToByte(String input) {
int length = input.length();
byte[] output = new byte[length / 2];
for (int i = 0; i < length; i += 2) {
output[i / 2] = (byte) ((digit(input.charAt(i), 16) << 4) | digit(input.charAt(i+1), 16));
}
return output;
}
//changes a hex string into plain text
public static StringBuilder HexToString(String hex) throws Exception {
StringBuilder output = new StringBuilder();
for (int i = 0; i < hex.length(); i+=2) {
String str = hex.substring(i, i+2);
output.append((char)Integer.parseInt(str, 16));
}
return output;
}
}
*编辑解决方案的方法 - 我不是使用随机 IV,而是从密文的前 16 位中提取 IV。作业中说是这样的,出于某种原因,我第一次看的时候就忽略了它。
public static byte[] Decrypt() throws Exception {
String algorithm = "AES";
String mode = "CTR";
String padding = "NoPadding";
byte[] ciphertextBytes = StringToByte("0ec7702330098ce7f7520d1cbbb20fc388d1b0adb5054dbd7370849dbf0b88d393f252e764f1f5f7ad97ef79d59ce29f5f51eeca32eabedd9afa9329");
byte[] keyBytes = StringToByte("36f18357be4dbd77f050515c73fcf9f2");
//int ivSize = 16;
//byte[] iv = new byte[ivSize];
//SecureRandom secureRandom = SecureRandom.getInstance("SHA1PRNG");
//secureRandom.nextBytes(iv);
byte[] ivParamSpecTMP = StringToByte("69dda8455c7dd4254bf353b773304eec");
IvParameterSpec ivParameterSpec = new IvParameterSpec(ivParamSpecTMP);
SecretKey aesKey = new SecretKeySpec(keyBytes, "AES");
Cipher cipher = Cipher.getInstance(algorithm + "/" + mode + "/" + padding, "JsafeJCE");
cipher.init(Cipher.DECRYPT_MODE, aesKey, ivParameterSpec);
byte[] result = cipher.doFinal(ciphertextBytes);
return result;
最佳答案
诀窍是您必须将 IV(以纯文本形式)发送给接收者。如果您在解密之前随机生成 IV,那么根据定义您将得到垃圾。随机 IV 只能在加密之前生成。
标准做法是发送者在密文中添加 IV 前缀。接收方使用前 16 个字节作为 IV,其余的作为实际密文。
关于Java CBC 解密有效,但 CTR 失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21237181/
我有固定宽度的三列的页面布局。请参阅以下 HTML 和 CSS 片段 在显示器的某些分辨率下(尤其是在 firefox 中),当我缩放页面 (CTR-) 时,模板页面正在折叠。我找不到解决此问题的方法
我的问题是我无法从下面的 C 代码中获取 AES 256 CTR 输出以匹配下面 OpenSSL 命令的输出。 C 代码产生这个: 5f b7 18 d1 28 62 7f 50 35 ba e9 6
给定一个简单的 template struct X { T x, y; }; ,我想提供转换构造函数,以便用户可以编写: X a; X b = a; // uses implicit convers
我正在使用这个 example尝试使用 AES-256 加密数据。但是,当我使用密码 WeakPasswordForTesting 作为输入时,出现错误:crypto/aes: invalid key
有人在 windows 上尝试过 microk8s(我只需要在我一直使用 debian 的进程中使用它)我在将图像导入 microk8s 时出错 命令:microk8s ctr image impor
什么是“ctr”文件扩展名?最近我发现一个网站有一个名为“create.ctr”的文件,那是什么语言? 最佳答案 文件扩展名 .CTR 详细信息 http://filext.com/file-exte
所以我有这个代码,它基本上加密两个纯文本消息,然后尝试解密它们,然后打印。问题是第一条消息恢复得很好,但第二条消息是垃圾。我从 this tutorial 下载了这段代码,然后将其修改为使用字符串而不
有人能告诉我衡量访问主页并观看视频然后访问同一网站的另一个页面的用户与访问网站但不观看视频的用户的最佳方法是什么。我想提供一个衡量标准,显示观看视频然后转到同一网站其他地方的用户与未观看视频的用户。我
我有我的服务特定图像的 tar 。我将它导入到 containerd 中,以便 k3s 使用它来部署 POD。用于导入图像的 tar 的命令是- k3s ctr images import XXX.t
我想知道这段代码的作用。我所知道的是,循环(加 1)将在 ctr==20 时停止,但是 if(ctr%2) 这里意味着什么? sum=0; for(ctr=0; ctr< 20; ct
已结束。此问题正在寻求书籍、工具、软件库等的推荐。它不满足Stack Overflow guidelines 。目前不接受答案。 我们不允许提出寻求书籍、工具、软件库等推荐的问题。您可以编辑问题,以便
我正在尝试自己实现 CTR 模式(目前仅解密),仅使用来自 pycrypto 的 AES 内置函数。这意味着我不应该使用 mode=AES.MODE_CTR。不过,我知道使用 AES.MODE_CTR
我正在实现一个小型演示应用程序,它使用 AES CTR 和 OpenSSL 进行加密,是否可以使用不同的操作模式测试向量来测试算法,例如在我的应用程序中测试 ECB 向量并检查结果,或者它是否仅限于
我正在使用以下工作代码来解密文件: #include #include #include struct ctr_state { unsigned char ivec[16]; u
我试图了解使用 CTR 模式的加密是如何工作的,所以我创建了这些函数来测试它: import ( "crypto/cipher" "crypto/rand" ) // generate
当我想用快捷键 ctrl + / 注释或注释掉我的代码时,IntelliJ 将 // 放在第一列而不是电流。当前如何发表评论? 例子 System.out.println(set.co
我有一个使用 libgcrypt 的 CTR 模式实现用 AES-256 加密的文件。 我希望能够分部分解密文件(例如,在不解密整个文件的情况下解密 20 个块中的 5-10 个块)。 我知道通过使用
ctr 模式可以将分组密码用作流密码,但这种模式下的加密强度如何? 最佳答案 最终,这取决于你所说的强是什么意思。例如,从加密的角度来看,即利用攻击者在不访问 key 的情况下解密您的密文的能力,它应
在 Delphi 项目中,CTRL + Space 不起作用。在“使用”之前,当我按 CTRL + Space 时,会出现代码完成,但在“使用”之后不会出现。我使用德尔福 2009。我安装了 Fast
我写了一个小的 java 脚本代码,它用有效的 url 替换 anchor 标记的 url。我的听众的代码 document.addEventListener("click", function (e
我是一名优秀的程序员,十分优秀!