- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在编写一个应用程序服务器,我决定使用 AES128/CTR/NoPadding 来保护连接,因为它被认为足够安全而不必将字节扩展到 block 边界,我认为它非常适合到逻辑上是无缝流的 TCP。
问题是 Cipher.update() 在它有一个完整的 16 字节 block 之前不会返回加密 block ,因为 CTR 基本上是基于 block 密码虽然模拟流密码。我应该从 tcp 套接字读取数据并在消息到达时立即处理消息,但我无法检索最新的 block ,因为它仍在构建并且其大小小于 16 字节。我等不及了,因为我们不知道下一条消息何时发送。当然,我可以调用 Cipher.doFinal() 来获取剩余部分,但这意味着流(连接)结束并且 Cipher 对象将被重新初始化。
我认为如果有一种方法可以查看结转,那就太好了。 CTR 只是将纯文本与 key 流进行异或运算,因此无论 block 中的其余字节如何,我都应该能够获得加密数据。这个问题会有很好的解决方法吗?我正在考虑编写一个包装器,用零加密伪造的纯文本以提前获取 key 流并手动进行 XOR,但我想知道其他人是如何解决这个问题的。
更新
我正在开发一个 Android 应用程序,结果发现这是 Dalvik VM 的问题。正如 Robert 和 monnand 在下面指出的那样,Java SE 至少在默认提供程序中没有这个问题。我想我必须编写一个包装类或将模式更改为 CFB8 才能解决这个问题。 (CTR8 不工作)感谢所有回复!
最佳答案
我刚刚使用 Oracle Java 1.7 在 CTR 模式下测试了 AES,我无法验证您的观察结果:
Cipher c = Cipher.getInstance("AES/CTR/NoPadding");
KeyGenerator kg = KeyGenerator.getInstance("AES");
c.init(Cipher.ENCRYPT_MODE, kg.generateKey());
System.out.println(c.update(new byte[1]).length); // output: 1
System.out.println(c.update(new byte[20]).length); // output: 20
可能是您使用了有缺陷的第三方实现,因为“AES128/CTR/NoPadding”在我的系统上不是已知密码。
关于java - 使用 AES/CTR 模拟流密码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16292694/
我有固定宽度的三列的页面布局。请参阅以下 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
我是一名优秀的程序员,十分优秀!