问题标签 [symmetric-key]

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 投票
1 回答
1240 浏览

encryption - 如何使用密码加密 AES 密钥?

我想使用密码短语加密 AES-128 位密钥。密码的最大字符数为 16。是否可以加密密钥?哪种算法适合加密密钥?

0 投票
1 回答
53 浏览

sql - 加密列 SQL Server 2008

我在表中有一个列,出于安全原因需要对其进行加密。SQL Server 2008 怎么可能做到这一点?

我发现这篇文章https://msdn.microsoft.com/en-us/library/ms179331.aspx,但是当我尝试创建主密钥时,它给了我一个错误,所以我无法继续

我以前从未这样做过,有人可以为我解释一下吗?

谢谢,

0 投票
2 回答
1175 浏览

java - 分块 AES 对称加密

用例 1(工作基线):

用例一很简单,并且已实现/工作。

  1. 在 Java 中,一举将流写入磁盘。
  2. 使用对称密码包装输出流,以便加密磁盘上的内容。
  3. 稍后,从磁盘读取。一举用相同的对称密码包装输入流,以便从输入流中检索到的内容是明文并匹配原始内容。

用例 2(未确定合适的解决方案):

  1. 在 Java 中,将流写入磁盘。
  2. 允许将后续字节(“块”)附加到文件中。
  3. 使用对称密码包装输出流,以便加密磁盘上的内容。
  4. 使用相同的密码,以便所有块都以相同的方式加密。
  5. 稍后,从磁盘读取。一举用相同的对称密码包装输入流,以便从输入流中检索到的内容是明文并匹配原始内容。

问题陈述:

加密和解密“abc”与分别加密和解密“a”、“b”和“c”产生的结果不同,因此用例2中描述的“分块”文件将无法成功解密。

实际问题:

...所以问题是,如何配置一个可以一次加密一个块的 Java 密码流,(a) 无需事先了解加密块,以及 (b) 可以使用单个输入流密码包装器进行解密 (无需了解附加文件的索引)...

0 投票
2 回答
2299 浏览

java - 如何从内存中“清零”Java 中的 AES SecretKeySpec 密钥

我正在使用 Java AES 加密

生成一个 Key 对象。

加密某些内容后,我想从内存中删除密钥。

我可以删除对密钥的所有引用,但这并不能保证密钥不会在内存中的某个位置浮动。

我可以将用于生成密钥的 byte[] 数组“清零”,但是如何清零或刷新实际的密钥内存。

0 投票
1 回答
212 浏览

java - 我从哪里获得 AES 密钥计划加密密钥?

我已经在 J​​ava 中实现了 AES 密钥计划,但我对一件事感到困惑。在维基百科(http://en.wikipedia.org/wiki/Rijndael_key_schedule#Key_schedule_description)它说:

扩展密钥的前 n 个字节只是加密密钥。

这个“加密密钥”从何而来?它是随机生成的,如果是的话,你应该用什么约束来生成它?

目前我有一个方法可以生成一个 16 字节的随机数组:

我也想打印这个密钥,但是因为如果我使用大于 127(当前为 255)的数字,java 只有带符号的字节,我会得到不能在字符串中正确表示的负数,其中 outputbyte 是byte[] 并将整数转换为字节并存储在其中:

使用 127 是否可以接受?

0 投票
1 回答
2603 浏览

php - 生成加密密钥的不同方法是什么

我正在使用 aes256 和 php 来加密数据。
在各种文档中,我看到了生成密钥的各种方法,例如:

或者

或者

与其他示例相比,第一个示例的重点是什么?为什么不简单地使用 128 或 256 长的随机字符串?

我在这里使用示例http://php.net/manual/en/function.mcrypt-encrypt.php以及上述每种不同的密钥生成方法。

0 投票
0 回答
602 浏览

encryption - AES CBC - 有消息输入和输出以及 IV 并且必须找到密钥

我已经给出了初始化向量和输入文本。我也有编码的文本。

现在我的问题是,我怎样才能找到密钥,因为我的任务是更改输出文本。(这是一个家庭作业,我的教授说你可以在回家的路上在火车上半小时内完成......但我完全不知道,只知道 AES 和 CBC 是如何工作的,但绝对不是我必须如何开始这个任务。

任务:前 16 个字节是初始化向量,后 16 个字节是我的密文。我的文字是“向卡尔发送 5 美元”。现在我认为我首先需要关键因为我的任务是将消息“向卡尔发送 5 美元”更改为“向鲍勃发送 50 美元。

0 投票
1 回答
2635 浏览

php - 用于 mcrypt_encrypt 的 32 个字符的 PHP AES 密钥

考虑以下 PHP 代码:

运行时,这会产生输出:

请注意,我从PHP Java AES CBC Encryption Different Results中窃取了第一段代码

现在 - 这是问题:

在第一种情况下,传入的密钥是一个 16 个字符的字符串。如果每个单独的字符都被解释为一个 8 位的数量,这将给出预期的 128 位密钥大小。事实上,我在上面引用的 StackOverflow 页面上的 Java 代码正是这样做的,并获得了与 PHP 相同的结果。

在上面的第二次调用中mcrypt_encrypt,我将密钥的长度加倍。 mcrypt_encrypt很高兴地接受了这一点,但产生了与第一种情况不同的加密输出。因此,很明显,它认为这是一个不同的密钥——例如,它不会只取前 128 位并丢弃任何过去的位。

那么,如何mcrypt_encrypt处理输入的密钥字符串以得出MCRYPT_RIJNDAEL_128算法所需的 128 位密钥呢?

如果它有任何区别,我特别感兴趣的情况是像我的第二个示例一样传入 32 个字符的字符串 - 我必须创建一个匹配的解密例程(在 Java 中),所以我需要弄清楚如何在这种情况下实际上生成了密钥。我引用的页面有非常好的 Java 代码(它适用于我所有的测试用例)——我只是缺少正确的关键字节集。

0 投票
1 回答
1347 浏览

javascript - 字节数组可以用作 CryptoJS.RC4.encrypt 的密钥吗?

我需要使用一个字节数组(不可打印的字符)作为 RC4 加密的密钥。明文是一个字符串。似乎CryptoJS.RC4.encrypt只需要明文和密钥的字符串。我对么?如果没有,我如何encrypt()用字符串和字节数组调用?

0 投票
1 回答
934 浏览

java - 32字节字符串表示的Java aes键

如何才能做到这一点?我想获取生成的 aes 密钥并将其转换为明文 16 字节表示

我用它来生成密钥(很确定密钥是 32 字节,除非我在考虑 256 位密钥?)