问题标签 [secure-random]
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.
java - 创建“好的” SecureRandom 的最佳方法是什么?
有很多问题询问 SecureRandom 的特定启动是否“好”,但我找不到经验法则。
创建“好”随机 SecureRandom 的最佳方法是什么?
java - 为什么 Java 中的 BigInteger.isProbablePrime() 函数对负数返回 true?
我正在用 Java 实现 RSA 公钥加密算法。它需要生成两个随机素数。我一直在使用 SecureRandom 类来生成两个 1024 位数字来创建一个 2048 位密钥。我使用 BigInteger 类处理数字。我使用 isProbablePrime() 函数来确定它是否为素数,确定性为 100。但是,我注意到该函数对负数返回 true,即使根据定义,素数不能为负数。
java - (AES加密)代码缺陷,我应该注意什么?[提供代码][Java]
感谢您抽出时间来帮助我!
这篇文章已经过编辑,以获取更少的信息,请参阅已编辑的部分
好吧,我已经在这件事上花费了我们的研究,最后我得到了一段工作代码..
但是加密不是犯错的地方,我想问一下我的代码是否真的安全!这对我来说真的很重要,因为我想将它实现到一个程序中,所以我的代码是......
编辑
简单 Java AES 加密/解密示例的可能副本 – JFPicard
嗯,可能是,但这些答案使用 IVParameterSpec,我想知道这行代码是否真的安全,或者它是否是不好的做法:
因为我new SecureRandom()
每次都使用,而且我还没有看到有人使用这样的 SecureRandom 对象。
java - 如何从 JVM 获取熵?
假设我需要好的种子来在 Java 程序中初始化伪随机生成器 (PRNG),并且我无法访问任何硬件随机生成器。
如何在没有任何用户交互的情况下从 JVM 获取熵?
ruby-on-rails - 如何检查字符串是否为 SecureRandom.urlsafe_base64(64)
字符串:
所以问题基本上就是标题所说的:是否有一种理智的方法来检查是否使用上述方法生成了字符串?
也许有一些正则表达式?来自文档:
结果可能包含 AZ、az、0-9、“-”和“_”。如果填充为真,也使用“=”。
我认为没有,因为字符串只是一个字符串,但我需要知道在检查它时我是否可以依赖超过它的长度的任何东西。
最初的问题是 Rollbar gem 使用 过滤 API 请求标头***
,我想更改它,以便我可以看到n
api 令牌的第一个字符来跟踪谁发出了失败的请求。
ruby - 在 Ruby 中使用 SecureRandom 生成长度为 6 的随机数
我试过SecureRandom.random_number(9**6)
了,但有时会返回 5 个数字,有时会返回 6 个数字。我希望它的长度始终为 6。我也更喜欢它的格式,比如SecureRandom.random_number(9**6)
不使用语法6.times.map
,这样在我的控制器测试中更容易被存根。
encryption - 安全的随机种子和 derby 数据库创建
这是我的加密数据库:
私有静态最终字符串 EMBEDDEDDRIVER = "org.apache.derby.jdbc.EmbeddedDriver"; "jdbc:derby:./db;create=true;dataEncryption=true;bootPassword=somepassword;encryptionProvider=org.bouncycastle.jce.provider.BouncyCastleProvider;encryptionAlgorithim=AESEngine/CFBBlockCipher/NoPadding;sqlAutorization=true";
我将 JCE jar 扩展到我的 jdk 安全性,并将提供程序优先级设置如下:security.provider.1=org.bouncycastle.jce.provider.BouncyCastleProvider security.provider.2=sun.security.provider.Sun
当我尝试创建数据库时......我得到了这个异常:
引起:java.lang.StackOverflowError at org.bouncycastle.crypto.prng.SP800SecureRandom.setSeed(Unknown Source) at org.bouncycastle.jcajce.provider.drbg.DRBG$Default.engineSetSeed(Unknown Source) at java.security.SecureRandom .setSeed(SecureRandom.java:427)
我只是在尝试创建一个数据库 .. 种子在这个阶段必须做什么(请原谅我,因为我对加密非常陌生)如果有相同问题的答案,我希望你指导我或给我一个答案。 ..两种方式都值得赞赏。
java - Java 加密:在我的 AES/CBC/PKCS5Padding 场景中使用什么种子
我正在构建一个应用程序,它将使用 AES/CBC/PKCS5Padding 方法来加密用户设备上的数据,安全性非常重要。我想防止暴力攻击,以防有人掌握数据库。
表中的每一行都有一个关联的标题。我不知道用什么作为种子。我可以执行以下操作之一:
在源代码中硬编码我自己的种子,但我相信如果有人反编译我的应用程序,可以阅读
使用用户输入的标题作为种子
使用我自己的种子和输入的标题的串联
除非有其他方法,否则在上述所有场景中,我可以想象有人找出种子。这对他们能够暴力破解加密数据有用吗?当然,在上述所有场景中,我还将用户密码作为密钥的一部分。
我怎样才能让潜在的黑客变得更加困难?
编辑(重新编辑)
基于以下回复以及我的研究和思考过程。我想我可以做到以下几点。
- 让用户输入密码,但不将其存储在数据库中
- 在存储敏感数据之前,他们必须输入一个标签来识别它。我会将其作为明文存储在数据库中并将其用作盐
- 我将使用用户的密码和带有 PBKDF2 的标签来生成密钥,但不会存储它
- 我将使用 #3 生成的密钥来加密敏感数据
- 为了解密,我将再次根据用户的密码和行标签生成密钥,并使用它来解密敏感数据
这听起来对吗?如果黑客通过两列(标签明文和加密数据)掌握数据库,他们是否能够推断出任何东西?
编辑 2
我正计划构建一个具体的 Android 应用程序,以下链接非常符合我的需要。
https://nelenkov.blogspot.in/2012/04/using-password-based-encryption-on.html?m=1
https://android-developers.googleblog.com/2013/02/using-cryptography-to-store-credentials.html?m=1
java - 使用 SecureRandom 生成安全随机数
如何使用Java 类生成6位整数?SecureRandom
我正在尝试以下代码来生成随机数:
它正在生成任何长度的随机数,包括负数。我在课堂上找不到任何方法SecureRandom
来提供一系列数字。我想生成一个6位数的正随机数
java - 我应该定期 reSeed SecureRandom 还是自动发生?
我们使用SecureRandom
如下(使用Java8
):
正在使用的算法是NativePRNG
.
我们应该定期播种吗?
正如它所写的那样,NativePRNG 不断地从操作系统接收熵(通过从 /dev/(u)random 读取)
你怎么看?