问题标签 [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.

0 投票
4 回答
1192 浏览

perl - Perl中使用对称加密的安全不可篡改的URL组件?

好的,我可能只是星期一过得很糟糕,但我有以下需求,我看到了很多部分解决方案,但我确定我不是第一个需要这个的人,所以我想知道我是否我错过了明显的。

$client 有 50 到 500 字节的二进制数据,必须插入到 URL 的中间并往返于客户的浏览器。由于它是 URL 的一部分,因此我们遇到了 GET URL 的 1K“理论”限制。此外,$client 不希望他们的客户解码数据,或者在不被发现的情况下篡改数据。$client 也不希望在服务器端存储任何东西,所以它必须是完全独立的。必须是 Perl 代码,并且在编码和解码方面都很快。

我认为最后一步可以是base64。但是最有意义的加密和散列步骤是什么?

0 投票
1 回答
1383 浏览

aes - AES / Rijndael 测试向量:什么填充模式?

所以我一直在为 CBC 模式下的 AES / Rijndael(带有 128 位块)的已知答案测试查看 这些测试向量,我想知道:他们使用什么样的填充? PKCS7?

0 投票
11 回答
6234 浏览

algorithm - 整数的对称双射算法

我需要一种算法,可以将 32 位有符号整数一对一映射(即无冲突)到另一个 32 位有符号整数。

我真正关心的是足够的熵,以至于函数的输出看起来是随机的。基本上我正在寻找一种类似于 XOR Cipher 的密码,但它可以生成更多看起来任意的输出。安全不是我真正关心的问题,尽管默默无闻是。

为澄清目的进行编辑:

  1. 该算法必须是对称的,这样我就可以在没有密钥对的情况下反转操作。
  2. 该算法必须是双射的,每个 32 位输入数字必须生成一个 32 位唯一数字。
  3. 函数的输出必须足够晦涩,只在输入中添加一个会对输出产生很大的影响。

预期结果示例:

F(100) = 98456
F(101) = -758
F(102) = 10875498
F(103) = 986541
F(104) = 945451245
F(105) = -488554

就像 MD5 一样,改变一件事可能会改变很多事情。

我正在寻找一个数学函数,所以手动映射整数不是我的解决方案。对于那些询问的人来说,算法速度并不是很重要。

0 投票
2 回答
596 浏览

security - 如何基于拥有对称密钥对客户端进行身份验证?

我们的客户通过 SSL 调用我们的 Web 服务并使用用户名和密码进行身份验证。然后我们的服务器生成一个对称密钥并将其发送回客户端。

然后,客户端与我们的服务器建立 TCP 连接,并发送登录消息。此时,我要对客户端进行身份验证。

我的想法是让客户端使用对称密钥加密一段众所周知的/静态文本,并将其用作它拥有密钥的证据。

由于对称密钥是随机生成的,我可以在这里使用静态文本吗?

任何输入表示赞赏。

0 投票
5 回答
34696 浏览

python - 使用 AES+CTR 的 PyCrypto 问题

我正在编写一段代码来使用对称加密来加密文本。但它并没有以正确的结果回来......

在这里,解密后的文本与原始文本不同。

我对密码学不太了解,所以请多多包涵。我知道 CTR 模式需要一个“计数器”功能来每次提供一个随机计数器,但是当我的密钥是 32 个字节并且它坚持我的消息也是 16 个字节的倍数时,为什么它需要它是 16 个字节?这是正常的吗?

我猜它不会回到原始消息,因为计数器在加密和解密之间发生了变化。但是,无论如何,它在理论上应该如何工作?我究竟做错了什么?无论如何,我不得不求助于欧洲央行,直到我弄清楚:(

0 投票
1 回答
3695 浏览

java - 在 AES/CBC/PKCS5Padding 中获取“BadPaddingException:垫块损坏”

我的常数

加密

在另一堂课我做解密

现在,当我运行它时,我在解密时在 doFinal 处得到了 BadPaddingException,我做错了什么?如果我删除 CBC/PKCS5Padding 和 IV 的东西并只使用 AES,它就可以工作!

0 投票
2 回答
171 浏览

encryption - 许可证文件的静态或随机 IV

我制作了一个小程序,允许我以加密形式向用户发送许可证。

目前我有

  • 加密我的 AES 密钥的 RSA 私钥
  • 加密数据的单个 AES/CBC 密钥
  • 一个 RSA 公钥

AES 和公钥都被硬编码到设备上。

当请求许可证时,我应该如何处理 IV,我应该在设备上创建一个静态的,还是在我创建的每个新许可证时发送一个新的?

0 投票
2 回答
1612 浏览

key - 从加密和明文数据中查找 AES 密钥

如果我有一条明文消息 M 及其加密的等效 E,并且我知道它已使用 256 位 AES 密钥加密,有没有办法计算出密钥?如果 M 足够长,有没有办法做到这一点?

0 投票
3 回答
1084 浏览

c# - CAPICOM TripleDES 和 System.Security.Cryptography TripleDES 的区别

我正试图放弃使用 CAPICOM,因为我不能再使用它(64 位 Windows 7 机器)。

使用 TripleDES 的现有代码如下:

为加密提供的唯一信息是密钥。secretKey 大约有十个字节。有没有办法使用 .NET 类进行相同的加密。注意:这用于验证与仍将使用 CAPICOM 的 Web 服务的连接。非常感谢任何帮助或想法。

0 投票
3 回答
7360 浏览

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 对象创建行以包含填充类型来“修复”异常,如下所示:

但是文件大小仍然不匹配,并且可以预见的是,新加密的文件是胡扯!

我承认我现在在加密/解密方面超出了我的舒适区,这可能是一个新手错误 - 但我无法发现它!

任何有关解决此问题的帮助将不胜感激!