问题标签 [aes]
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.
memory - 密码学:内存中密钥的最佳实践?
背景:我在数据库中使用 AES(即对称加密)加密了一些数据。在(假定的)安全且隔离的 Linux 机器上运行的服务器端应用程序使用此数据。它从数据库中读取加密数据,并写回加密数据,只处理内存中未加密的数据。因此,为了做到这一点,应用程序需要将密钥存储在内存中。
问题是,有没有什么好的最佳实践呢?保护内存中的密钥。
一些想法:
- 将其保存在不可交换的内存中(对于 linux:
SHM_LOCK
使用shmctl(2)
? 设置) - 将密钥拆分到多个内存位置。
- 加密密钥。用什么,以及如何保持...密钥密钥..安全?
- 每次需要时从文件中加载密钥(速度很慢,如果作恶者可以读取我们的内存,他可能也可以读取我们的文件)
关于为什么密钥可能泄漏的一些场景:邪恶的人掌握了内存转储/核心转储;错误的代码边界检查导致信息泄露;
第一个似乎是一件好事且非常简单的事情,但是其余的呢?其他想法?任何标准规范/最佳实践?
感谢您的任何意见!
java - Java PBEWithMD5AndDES
我正在使用基于密码的加密。我最初的想法是使用 AES 加密包含密码的文件。原来基于密码的加密不支持 AES。它使用 DES。AFAIK des 不安全。PBEWithMD5AndDES 是否足够安全以推送我的数据,还是我应该寻找另一种实现方式?
encryption - 强(即AES)和非强(即经典zip)加密之间是否存在非线性差异
AES 和其他现代加密算法被认为是强大的,有时人们会看到诸如“不建议使用经典的 zip 加密,因为它不再被认为是强大的”这样的引用。但是它们之间真的存在非线性差异吗?例如,如果两者都产生具有高熵的序列,这是否意味着使用非常长的密码(512 位或更多)它们都变得难以区分,因为理论上我们可以用十亿年的计算机时间来打破 AES 并以 1 压缩/10 那个时候?
javascript - 如何实现 AES-512 算法?
是否有实现 AES-512 算法(即加密、解密)的 javascript 可用?我发现大多数 javascript 实现了 AES-128、AES-192、AES-256。
c# - 有什么方法可以从 ruby 中解密 pkcs7 填充的 aes 256 cbc?
在尝试使用双方相同的 iv 从 ac# 程序中解密字符串时,我不断得到“错误解密”。这有点烦人,我无法真正找出问题所在。
这是红宝石代码
这就是c#端的加密
有任何想法吗?干杯大卫
security - 使用带有 SHA256 的 PBKDF2 生成 128 位 AES 密钥是否安全?
我想使用带有一些加密哈希函数的 PBKDF2 来生成 128 位 AES 密钥。SHA1 也是 128 位的,所以我想将它与 PBKDF2 一起使用,但它被破坏了,所以我选择使用 SHA256。这是安全的,还是散列大小和生成的密钥大小之间的差异会导致某种灾难性的静默截断,从而使 AES 密钥变弱?我应该让它为 AES 生成 256 位密钥吗?
iphone - iPhone 上 NSString 的 AES 加密
谁能指出我正确的方向来加密一个字符串,返回另一个带有加密数据的字符串?(我一直在尝试使用 AES256 加密。)我想编写一个方法,它需要两个 NSString 实例,一个是要加密的消息,另一个是要加密的“密码”——我怀疑我必须生成带有密码的加密密钥,如果密码与加密数据一起提供,则可以反转。然后该方法应返回从加密数据创建的 NSString。
我已经尝试过这篇文章第一条评论中详述的技术,但到目前为止我还没有运气。Apple 的CryptoExercise肯定有一些东西,但我无法理解它......我已经看到很多对CCCrypt的引用,但在我使用它的每种情况下它都失败了。
我还必须能够解密加密的字符串,但我希望它像 kCCEncrypt/kCCDecrypt 一样简单。
java - 如何使用 CBC 实现 Java 256 位 AES 加密
我已经阅读了以下主题,它们有所帮助,但我正在寻找更多信息。
如何使用 BlackBerry 的初始化向量参数编写 AES/CBC/PKCS5Padding 加密和解密
基本上,我正在编写一个程序,该程序将加密通过 TCP/IP 发送的请求,然后由服务器程序解密。加密需要是 AES,做一些研究我发现我需要使用 CBC 和 PKCS5Padding。所以基本上我还需要一个密钥和一个 IV。
我正在开发的应用程序是用于手机的,所以我想使用 java 安全包来减小大小。我已经完成了设计,但不确定 IV 和共享密钥的实现。
这是一些代码:
简而言之,它应该做的是加密一些可以由服务器解密的消息,而服务器不需要从电话中获取密钥或 IV。有没有一种方法可以做到这一点,我可以保护手机上的 IV 和密钥,并且仍然拥有服务器知道的密钥和 IV?如果不是,请随时告诉我让事情更清楚。
encryption - Java中的电话到服务器通信加密
这与另一个线程一起出现,这里: How to implement Java 256-bit AES encryption with CBC
主要是尝试在使用 Java 的手机上进行 AES 加密。
我的问题是如何处理加密密钥。我不知道我是否应该存储密钥、散列密钥并使用它,或者执行公钥加密方案。我宁愿有办法不从服务器到手机发送初始消息来传递密钥。我希望手机准备好加密,服务器等待加密消息。要实现类似密钥共享算法的东西,我将不得不修改我们的服务器应用程序,这不是很理想。这并非不可能,但我要在这里进行代码重用 =)。
key - 使用 MD5 从密码生成加密密钥?
我正在编写一个简单的文件加密程序。主要作为学术练习,但可能供将来认真使用。所有繁重的工作都由第三方库完成,但以安全的方式将各个部分组合在一起对于非密码学家来说仍然是一个相当大的挑战。基本上,我已经按照我认为应该的方式进行了所有工作。
我使用 128 位 AES 进行加密,密钥长度为 128 位。我希望用户能够输入可变长度的密码,所以我决定用 MD5 对密码进行哈希处理,然后使用哈希作为密钥。我认为这是可以接受的——密钥总是应该是秘密的,所以没有理由担心碰撞攻击。
现在我已经实现了这个,我遇到了几篇文章,表明这是一个坏主意。我的问题是:为什么?如果选择了一个好的密码,密码本身应该足够强大,除非通过非凡的(阅读:目前不可行的)蛮力努力,否则永远不会泄露密钥,对吧?我应该使用 PBKDF2 之类的东西来生成密钥,还是对于除了最极端的加密应用程序之外的所有应用程序来说都是过度杀伤力?