问题标签 [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 投票
0 回答
1214 浏览

security - 如何选择 AES 填充模式?

根据您使用的框架,有多种填充模式可用于 AES 加密。例如,对于 .NET,我们可以选择 PKCS7、ISO10126、ANSIX923、Zeros 或 None。Java 中提供了类似的选项。

我了解加密器和解密器需要使用相同的模式才能互操作。

选择填充模式时有哪些注意事项?除了“无”之外,您选择哪个重要吗?有些可以被认为比其他更安全吗?

0 投票
2 回答
954 浏览

wcf - 如何使用 AES256 在 WCF 中设置硬编码对称加密?

如何使用具有 AES256 标准的硬编码对称密钥将 WCF 中的通道安全性定义为加密消息?我不想使用证书,而且我知道这是一种“弱”的安全做法。

0 投票
1 回答
756 浏览

sql-server - 使用不同密码打开 SQL Server 2008 对称密钥?

在我的场景中,我使用对称密钥来加密我的非对称密钥,后者用于加密一些敏感数据,这些数据应该只对选定的人群可用。

对称密钥是用密码加密的,我需要的是这个密钥有多个密码的可能性,这样每个密码就足以打开这个密钥。

我知道可以使用向现有对称密钥添加密码

问题是是否已经通过密码添加新加密并且这里的每个密码都会打开它,或者密钥只是被新密码额外加密并且必须提供所有密码和/或其他加密数据(证书,其他钥匙等)打开这把钥匙?

如果后者为真,我如何创建相同对称密钥但密码不同的多个副本?

0 投票
3 回答
2872 浏览

objective-c - Objective-C RC4 解密

我是 Objective-C 的新手,但我是一位经验丰富的开发人员 (C#),但我无法弄清楚:

我有一个 RC4 加密的字符串,我需要在 iPad (iOS 5.0) 上使用 Objective-C 对其进行解密。我在网上寻找了一个工作示例,但没有找到一个端到端工作的示例。下面的代码不仅没有正确返回解密的字符串,而且每次执行时都会返回不同的东西,这让我觉得指针正在某个地方释放。

注意:我不知道这是否重要,但字符串是使用http://archive.plugins.jquery.com/project/RC4加密的,然后作为文本存储在 Sqlite 数据库中,我现在从 Objective-C 访问该数据库(我知道,架构听起来很乱,但我现在无法改变。)

我使用的代码是(取自RC4 加密 - CommonCrypto (Objective-C) vs PHP):

0 投票
3 回答
96241 浏览

c# - 使用 C# 和 SymmetricAlgorithm 进行真正简单的加密

我正在寻找一种非常简单的加密/解密方法。我将始终使用相同的静态密钥。我知道这种方法的风险。目前我正在使用以下代码,但在加密和解密相同的字符串后它不会生成相同的结果(字符串中间有一些垃圾)。

我可以改变任何需要的东西,没有限制(但我只想有一个加密方法和另一个解密方法,而不在它们之间共享变量)。

谢谢。

0 投票
1 回答
379 浏览

c# - RijndaelManaged 加密的不一致行为

我在使用 RijndaelManaged 时遇到了一个奇怪的问题。基本上我有一个新的实例,我在其中设置了 CipherMode、Padding、IV 和 Key。然后我创建另一个实例并将原始实例的以下属性的相同值分配给第二个实例:Mode、Padding、KeySize、FeedbackSize、BlockSize、IV 和 Key。

因此,将所有属性值从实例 1 复制到实例 2 后,我应该得到相同的结果,对吧?错误的!两个实例的 GetHashCode() 以某种方式不同,但如果我转储它们的属性(如上所述),那么它们都是相同的。

如果我加密长度等于块大小(16 字节,128 位)的文本字符串,那么两者都会产生相同的结果,如果输入小于 BlockSize,则加密结果不一样。

我有这个来创建初始 Rijndael 实例。

为了举例说明对字符串进行加密:

那么就这样做

我得到了 cyper1 == cypher2 和 cypher11 != cypher21 还有 rm1.GetHashCode() != rm2.GetHashCode() 但所有公共参数都是一样的!

我还转储了两个实例的所有公共属性,看看我是否遗漏了一些东西,但不是,所有值都是相同的。

0 投票
6 回答
347342 浏览

php - 使用 PHP 的最简单的双向加密

在常见的 PHP 安装中进行双向加密的最简单方法是什么?

我需要能够使用字符串密钥加密数据,并在另一端使用相同的密钥进行解密。

安全性不像代码的可移植性那么重要,所以我希望能够使事情尽可能简单。目前,我正在使用 RC4 实现,但如果我能找到本机支持的东西,我想我可以节省很多不必要的代码。

0 投票
1 回答
2660 浏览

android - Android AES 基于密码的加密,对每条消息使用一个密钥和随机 IV

我目前正在 Android 上使用 AES 256 实现对称加密/解密,灵感来自这篇文章: Java 256bit AES Encryption。我实现的目的是我想加密数据库中的数据。

对于密钥生成,我使用以下构造函数,该构造函数采用 char[] 密码:

因此,当我在 Android 中启动我的 Activity 时,我初始化了我的 Cryptography 类的一个新实例,因此得到了一个生成的密钥。salt 是一个 16 字节的固定随机字节[]。所以这意味着我总是得到相同的密钥。后面的原因。

现在,在一个 Activity 中获得对象后,我可以使用以下加密和解密方法,始终使用相同的密钥:

如您所见,每次加密消息时,我都会保存一个新的 IV 和密文。

总之:我为数据库表中的每个字段使用一个加密密钥、一个随机盐和一个新的 IV。

首先,每当我加密数据库表中的一个字段并将所需的盐和 IV 与密文一起保存时,或者至少为一个表行保存时,我想生成一个带有新盐和新 IV 的新密钥。但我之所以这样做,是因为在 Android 设备上生成密钥需要很长时间。我在模拟器上进行了测试,但生成密钥大约需要两秒钟。这就是为什么我在启动 Activity 时只生成一个密钥的原因。

所以最后我的问题是:用我的方法,只使用一个密钥,但每条消息都使用新的随机 IV 是否足够安全?目前,我没有看到另一种方法可以通过使其与性能保持平衡来使其尽可能安全。

我希望我写的内容足够清楚,有人可以给我一些建议。

亲切的问候

希德贝格

0 投票
5 回答
5370 浏览

php - php中的两种加密方式

我需要在 PHP 中进行 2 路加密。基本上我想要做的是将字符串(Marshall例如)转换为奇怪的东西(s2323sdavrt44例如),然后将(s2323sdavrt44)转换回明文字符串(Marshall)。

我怎样才能做到这一点?不,我不是为密码或任何东西,为 div id 属性这样做,所以稍后我可以将它拆分为 SQL 查询。

0 投票
1 回答
941 浏览

encryption - Microsoft CNG BCryptEncrypt 返回密文 == 明文

我正在尝试围绕 CNG 的 AES 实现对称加密的 AES-OFB 包装器。

我遇到了一个我无法理解的问题...我创建了一个 AES 算法句柄 (BCRYPT_AES_ALGORITHM) 并导入了一个 AES 密钥。然后我尝试生成一个 16 字节的密钥流,用于对我的明文/密文进行异或运算。我第一次运行这种机制时,keyStreamPtr 从某个随机字节流变为另一个,但是,第三次这样做(第三组 16 字节的密钥流),我开始得到相同的输出并且它永远发生。

有没有人见过这样的事情?为什么 AES 会返回与作为输入的明文完全相同的密文?这又是针对 AES-OFB 实现的……也许我做错了什么?