- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
我正在使用这个 example尝试使用 AES-256 加密数据。但是,当我使用密码 WeakPasswordForTesting
作为输入时,出现错误:crypto/aes: invalid key size
。我的印象是它与我的普通密码长度有关。我如何使用此示例代码使用简短的纯文本密码来加密数据?
func Encrypt(password []byte, plainSource []byte) ([]byte, error) {
key, _ := hex.DecodeString(string(password))
block, err := aes.NewCipher(key)
if err != nil {
panic(err)
}
// The IV needs to be unique, but not secure. Therefore it's common to
// include it at the beginning of the ciphertext.
ciphertext := make([]byte, aes.BlockSize+len(plainSource))
iv := ciphertext[:aes.BlockSize]
if _, err := io.ReadFull(rand.Reader, iv); err != nil {
panic(err)
}
stream := cipher.NewCTR(block, iv)
stream.XORKeyStream(ciphertext[aes.BlockSize:], plainSource)
return ciphertext, nil
}
最佳答案
Advanced Encryption Standard (AES)是 block cipher它需要一个固定大小的键。 key 长度在密码名称中:AES-256 表示 key 长度为 256 位。
由于您的密码不是符合此规范的 key ,因此您需要实现一个流程才能做到这一点。一种常见的机制是 key 派生函数,它采用熵明显低于所需 key 长度的输入密码,并用各种数据填充它以生成所需长度的 key 。 PBKDF family (基于密码的 key 派生函数)就是一个例子,scrypt 也是。 .
您不应该以这种方式实现一种简单的机制来填充您的输入数据,因为一个好的密码系统的安全性完全取决于 key 的质量,并且任何本土解决方案都不太可能抵抗各种的攻击。</p>
This question关于使用 PBKDF2 对实现建议进行更彻底的评估,在 crypto.SE 上可能会很有趣。
关于go - 如何使用明文密码加密AES256 CTR?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52445930/
我正在使用 将文本显示在屏幕上 text.setText(text.getText().toString()+"binary message sent: "+ msg + "\n"); 如何从屏幕上删
我正在编写一个程序来 ping 服务器并返回一个值。 我一直在尝试将 ping 覆盖到 JFrame,其中 JLabel 在透明窗口中显示 ping。 但是,每次我调用方法 DrawOverlay()
我正在尝试从 JTextPane 中删除所有文本。我以为你可以简单地使用: textPane.setText(""); 这确实有效,但由于某种原因,调用该方法后总是有一个空行。为什么会这样?我该如何预
更新到新发布的 Xcode 7 版本后,我遇到了这个问题。 应用程序传输安全性已阻止明文 HTTP (http://) 资源加载,因为它不安全。可以通过应用程序的 Info.plist 文件配置临时异
我试图在单击单选按钮时清除简单文本框中的文本。这是我的 CoffeeScript ... $("#selection_single").click -> $("#from_date_tex
复制代码 代码如下: Set Shell = CreateObject("WScript.Shell") Shell.Run "cmd /c @runas /use
TortoiseSVN 需要打开哪些端口进行身份验证(基本)才能提交?我知道这不是一件好事,但我相信用户名和密码现在是清楚的。 让我尽可能多地描述一下我所知道的设置以及似乎正在发生的情况。 我是一名承
我正在使用速度模板为通知系统生成纯文本电子邮件。我有一个“收件人”POJO 列表,其中包含用户 ID 和电子邮件地址。我想迭代这些 POJO 并在一行中输出用户 ID(最终用逗号等分隔符分隔)。我在格
我正在尝试围绕 CNG 的 AES 实现 AES-OFB 包装器以进行对称加密。 我遇到了一个我无法理解的问题...我创建了一个 AES 算法句柄 (BCRYPT_AES_ALGORITHM) 并导入
dat.gui.js 我尝试使用DAT.GUI.js中的文本输入,当我单击输入框时,如果有默认值,文本输入框应该是清晰的。完成后,会弹出一个确认框(Message Box),告知用户输入的消息。 现在
我正在使用原生脚本的 angular 版本并尝试为我的网络创建登录系统。 下面是我尝试登录网络的代码。 home.component.ts import { LoginService } from
我有一个从 Nib 加载的屏幕外 UITextView 实例,当用户点击“评论”按钮时,它会移动到屏幕框架中。输入使用的任何文本都是不可见的。如果用户旋转设备,文本就会出现。 我试过设置 setNee
我正在尝试使用 pyaes 进行 AES 加密。 我的下面的代码运行完美。 text = 'Hello world !!!!' encrypter = pyaes.AESModeOfOperation
我在 Stack Overflow 中看到了很多答案,解释了我们如何通过监听 keydown 事件并将焦点重定向到位于屏幕外的文本区域来删除文本粘贴的格式。这个解决方案很好,但没有解决使用上下文菜单或
正如标题所说。使用 iPhone SDK,我想使用服务器提供的现有 key 和指数对一些(小)明文进行 RSA 加密以进行身份验证。这肯定是一项简单的任务,需要一个库导入和几行代码?如果没有,为什
我是一名优秀的程序员,十分优秀!