问题标签 [encryption-symmetric]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
perl - Perl中使用对称加密的安全不可篡改的URL组件?
好的,我可能只是星期一过得很糟糕,但我有以下需求,我看到了很多部分解决方案,但我确定我不是第一个需要这个的人,所以我想知道我是否我错过了明显的。
$client 有 50 到 500 字节的二进制数据,必须插入到 URL 的中间并往返于客户的浏览器。由于它是 URL 的一部分,因此我们遇到了 GET URL 的 1K“理论”限制。此外,$client 不希望他们的客户解码数据,或者在不被发现的情况下篡改数据。$client 也不希望在服务器端存储任何东西,所以它必须是完全独立的。必须是 Perl 代码,并且在编码和解码方面都很快。
我认为最后一步可以是base64。但是最有意义的加密和散列步骤是什么?
aes - AES / Rijndael 测试向量:什么填充模式?
所以我一直在为 CBC 模式下的 AES / Rijndael(带有 128 位块)的已知答案测试查看 这些测试向量,我想知道:他们使用什么样的填充? PKCS7?
algorithm - 整数的对称双射算法
我需要一种算法,可以将 32 位有符号整数一对一映射(即无冲突)到另一个 32 位有符号整数。
我真正关心的是足够的熵,以至于函数的输出看起来是随机的。基本上我正在寻找一种类似于 XOR Cipher 的密码,但它可以生成更多看起来任意的输出。安全不是我真正关心的问题,尽管默默无闻是。
为澄清目的进行编辑:
- 该算法必须是对称的,这样我就可以在没有密钥对的情况下反转操作。
- 该算法必须是双射的,每个 32 位输入数字必须生成一个 32 位唯一数字。
- 函数的输出必须足够晦涩,只在输入中添加一个会对输出产生很大的影响。
预期结果示例:
F(100) = 98456
F(101) = -758
F(102) = 10875498
F(103) = 986541
F(104) = 945451245
F(105) = -488554
就像 MD5 一样,改变一件事可能会改变很多事情。
我正在寻找一个数学函数,所以手动映射整数不是我的解决方案。对于那些询问的人来说,算法速度并不是很重要。
security - 如何基于拥有对称密钥对客户端进行身份验证?
我们的客户通过 SSL 调用我们的 Web 服务并使用用户名和密码进行身份验证。然后我们的服务器生成一个对称密钥并将其发送回客户端。
然后,客户端与我们的服务器建立 TCP 连接,并发送登录消息。此时,我要对客户端进行身份验证。
我的想法是让客户端使用对称密钥加密一段众所周知的/静态文本,并将其用作它拥有密钥的证据。
由于对称密钥是随机生成的,我可以在这里使用静态文本吗?
任何输入表示赞赏。
python - 使用 AES+CTR 的 PyCrypto 问题
我正在编写一段代码来使用对称加密来加密文本。但它并没有以正确的结果回来......
在这里,解密后的文本与原始文本不同。
我对密码学不太了解,所以请多多包涵。我知道 CTR 模式需要一个“计数器”功能来每次提供一个随机计数器,但是当我的密钥是 32 个字节并且它坚持我的消息也是 16 个字节的倍数时,为什么它需要它是 16 个字节?这是正常的吗?
我猜它不会回到原始消息,因为计数器在加密和解密之间发生了变化。但是,无论如何,它在理论上应该如何工作?我究竟做错了什么?无论如何,我不得不求助于欧洲央行,直到我弄清楚:(
java - 在 AES/CBC/PKCS5Padding 中获取“BadPaddingException:垫块损坏”
我的常数
加密
在另一堂课我做解密
现在,当我运行它时,我在解密时在 doFinal 处得到了 BadPaddingException,我做错了什么?如果我删除 CBC/PKCS5Padding 和 IV 的东西并只使用 AES,它就可以工作!
encryption - 许可证文件的静态或随机 IV
我制作了一个小程序,允许我以加密形式向用户发送许可证。
目前我有
- 加密我的 AES 密钥的 RSA 私钥
- 加密数据的单个 AES/CBC 密钥
- 一个 RSA 公钥
AES 和公钥都被硬编码到设备上。
当请求许可证时,我应该如何处理 IV,我应该在设备上创建一个静态的,还是在我创建的每个新许可证时发送一个新的?
key - 从加密和明文数据中查找 AES 密钥
如果我有一条明文消息 M 及其加密的等效 E,并且我知道它已使用 256 位 AES 密钥加密,有没有办法计算出密钥?如果 M 足够长,有没有办法做到这一点?
c# - CAPICOM TripleDES 和 System.Security.Cryptography TripleDES 的区别
我正试图放弃使用 CAPICOM,因为我不能再使用它(64 位 Windows 7 机器)。
使用 TripleDES 的现有代码如下:
为加密提供的唯一信息是密钥。secretKey 大约有十个字节。有没有办法使用 .NET 类进行相同的加密。注意:这用于验证与仍将使用 CAPICOM 的 Web 服务的连接。非常感谢任何帮助或想法。
c# - 对大文件使用 Rijndael 加密
我处于需要安全地加密/解密长度为 n 的文件的情况,理想情况下使用 Rijndael,但绝对是 256 位加密。
我以前玩过加密,并且非常高兴地加密/解密字符串和字节数组。但是,因为我不知道文件的大小(并且有问题的文件可能非常大(~2.5gb)是非常可行的,所以我不能将它们加载到字节数组中并在其中对它们进行编码/解密一个单一的界限,就像我以前一样。
因此,在 Google 上阅读了一番之后,我知道答案是分块加密和解密文件,因此我生成了以下代码:
这一切对我来说“看起来”都很好,但可悲的是看起来似乎是骗人的!
加密工作没有错误,但在解密期间,“cryptoStream.Close()”方法抛出以下异常:
System.Security.Cryptography.CryptographicException 未处理 Message="填充无效,无法删除。"
Source="mscorlib" StackTrace:在 System.Security.Cryptography.RijndaelManagedTransform.DecryptData(Byte[] inputBuffer, Int32 inputOffset, Int32 inputCount, Byte[]& outputBuffer, Int32 outputOffset, PaddingMode paddingMode, Boolean fLast) 在 System.Security.Cryptography .RijndaelManagedTransform.TransformFinalBlock(Byte[] inputBuffer, Int32 inputOffset, Int32 inputCount) at System.Security.Cryptography.CryptoStream.FlushFinalBlock() at System.Security.Cryptography.CryptoStream.Dispose(Boolean disposing) at System.IO.Stream.Close ()
似乎未加密的文件大小与预期的文件大小不匹配(范围从大约 8 个字节到大约 60 个字节)
我通过更改 RijndaelManaged 对象创建行以包含填充类型来“修复”异常,如下所示:
但是文件大小仍然不匹配,并且可以预见的是,新加密的文件是胡扯!
我承认我现在在加密/解密方面超出了我的舒适区,这可能是一个新手错误 - 但我无法发现它!
任何有关解决此问题的帮助将不胜感激!