问题标签 [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.
encryption - 如何使用密码加密 AES 密钥?
我想使用密码短语加密 AES-128 位密钥。密码的最大字符数为 16。是否可以加密密钥?哪种算法适合加密密钥?
sql - 加密列 SQL Server 2008
我在表中有一个列,出于安全原因需要对其进行加密。SQL Server 2008 怎么可能做到这一点?
我发现这篇文章https://msdn.microsoft.com/en-us/library/ms179331.aspx,但是当我尝试创建主密钥时,它给了我一个错误,所以我无法继续
我以前从未这样做过,有人可以为我解释一下吗?
谢谢,
java - 分块 AES 对称加密
用例 1(工作基线):
用例一很简单,并且已实现/工作。
- 在 Java 中,一举将流写入磁盘。
- 使用对称密码包装输出流,以便加密磁盘上的内容。
- 稍后,从磁盘读取。一举用相同的对称密码包装输入流,以便从输入流中检索到的内容是明文并匹配原始内容。
用例 2(未确定合适的解决方案):
- 在 Java 中,将流写入磁盘。
- 允许将后续字节(“块”)附加到文件中。
- 使用对称密码包装输出流,以便加密磁盘上的内容。
- 使用相同的密码,以便所有块都以相同的方式加密。
- 稍后,从磁盘读取。一举用相同的对称密码包装输入流,以便从输入流中检索到的内容是明文并匹配原始内容。
问题陈述:
加密和解密“abc”与分别加密和解密“a”、“b”和“c”产生的结果不同,因此用例2中描述的“分块”文件将无法成功解密。
实际问题:
...所以问题是,如何配置一个可以一次加密一个块的 Java 密码流,(a) 无需事先了解加密块,以及 (b) 可以使用单个输入流密码包装器进行解密 (无需了解附加文件的索引)...
java - 如何从内存中“清零”Java 中的 AES SecretKeySpec 密钥
我正在使用 Java AES 加密
生成一个 Key 对象。
加密某些内容后,我想从内存中删除密钥。
我可以删除对密钥的所有引用,但这并不能保证密钥不会在内存中的某个位置浮动。
我可以将用于生成密钥的 byte[] 数组“清零”,但是如何清零或刷新实际的密钥内存。
java - 我从哪里获得 AES 密钥计划加密密钥?
我已经在 Java 中实现了 AES 密钥计划,但我对一件事感到困惑。在维基百科(http://en.wikipedia.org/wiki/Rijndael_key_schedule#Key_schedule_description)它说:
扩展密钥的前 n 个字节只是加密密钥。
这个“加密密钥”从何而来?它是随机生成的,如果是的话,你应该用什么约束来生成它?
目前我有一个方法可以生成一个 16 字节的随机数组:
我也想打印这个密钥,但是因为如果我使用大于 127(当前为 255)的数字,java 只有带符号的字节,我会得到不能在字符串中正确表示的负数,其中 outputbyte 是byte[] 并将整数转换为字节并存储在其中:
使用 127 是否可以接受?
php - 生成加密密钥的不同方法是什么
我正在使用 aes256 和 php 来加密数据。
在各种文档中,我看到了生成密钥的各种方法,例如:
或者
或者
与其他示例相比,第一个示例的重点是什么?为什么不简单地使用 128 或 256 长的随机字符串?
我在这里使用示例http://php.net/manual/en/function.mcrypt-encrypt.php以及上述每种不同的密钥生成方法。
encryption - AES CBC - 有消息输入和输出以及 IV 并且必须找到密钥
我已经给出了初始化向量和输入文本。我也有编码的文本。
现在我的问题是,我怎样才能找到密钥,因为我的任务是更改输出文本。(这是一个家庭作业,我的教授说你可以在回家的路上在火车上半小时内完成......但我完全不知道,只知道 AES 和 CBC 是如何工作的,但绝对不是我必须如何开始这个任务。
任务:前 16 个字节是初始化向量,后 16 个字节是我的密文。我的文字是“向卡尔发送 5 美元”。现在我认为我首先需要关键因为我的任务是将消息“向卡尔发送 5 美元”更改为“向鲍勃发送 50 美元。
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 代码(它适用于我所有的测试用例)——我只是缺少正确的关键字节集。
javascript - 字节数组可以用作 CryptoJS.RC4.encrypt 的密钥吗?
我需要使用一个字节数组(不可打印的字符)作为 RC4 加密的密钥。明文是一个字符串。似乎CryptoJS.RC4.encrypt
只需要明文和密钥的字符串。我对么?如果没有,我如何encrypt()
用字符串和字节数组调用?
java - 32字节字符串表示的Java aes键
如何才能做到这一点?我想获取生成的 aes 密钥并将其转换为明文 16 字节表示
我用它来生成密钥(很确定密钥是 32 字节,除非我在考虑 256 位密钥?)