问题标签 [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.

0 投票
2 回答
2346 浏览

java - 创建“好的” SecureRandom 的最佳方法是什么?

有很多问题询问 SecureRandom 的特定启动是否“好”,但我找不到经验法则。

创建“好”随机 SecureRandom 的最佳方法是什么?

0 投票
2 回答
630 浏览

java - 为什么 Java 中的 BigInteger.isProbablePrime() 函数对负数返回 true?

我正在用 Java 实现 RSA 公钥加密算法。它需要生成两个随机素数。我一直在使用 SecureRandom 类来生成两个 1024 位数字来创建一个 2048 位密钥。我使用 BigInteger 类处理数字。我使用 isProbablePrime() 函数来确定它是否为素数,确定性为 100。但是,我注意到该函数对负数返回 true,即使根据定义,素数不能为负数。

0 投票
1 回答
222 浏览

java - (AES加密)代码缺陷,我应该注意什么?[提供代码][Java]

感谢您抽出时间来帮助我!

这篇文章已经过编辑,以获取更少的信息,请参阅已编辑的部分

好吧,我已经在这件事上花费了我们的研究,最后我得到了一段工作代码..

但是加密不是犯错的地方,我想问一下我的代码是否真的安全!这对我来说真的很重要,因为我想将它实现到一个程序中,所以我的代码是......

编辑

简单 Java AES 加密/解密示例的可能副本 – JFPicard

嗯,可能是,但这些答案使用 IVParameterSpec,我想知道这行代码是否真的安全,或者它是否是不好的做法:

因为我new SecureRandom()每次都使用,而且我还没有看到有人使用这样的 SecureRandom 对象。

0 投票
2 回答
693 浏览

java - 如何从 JVM 获取熵?

假设我需要好的种子来在 Java 程序中初始化伪随机生成器 (PRNG),并且我无法访问任何硬件随机生成器。

如何在没有任何用户交互的情况下从 JVM 获取熵?

0 投票
1 回答
612 浏览

ruby-on-rails - 如何检查字符串是否为 SecureRandom.urlsafe_base64(64)

字符串:

随机::格式化。urlsafe_base64执行:

所以问题基本上就是标题所说的:是否有一种理智的方法来检查是否使用上述方法生成了字符串?

也许有一些正则表达式?来自文档:

结果可能包含 AZ、az、0-9、“-”和“_”。如果填充为真,也使用“=”。

我认为没有,因为字符串只是一个字符串,但我需要知道在检查它时我是否可以依赖超过它的长度的任何东西。

最初的问题是 Rollbar gem 使用 过滤 API 请求标头***,我想更改它,以便我可以看到napi 令牌的第一个字符来跟踪谁发出了失败的请求。

0 投票
3 回答
5431 浏览

ruby - 在 Ruby 中使用 SecureRandom 生成长度为 6 的随机数

我试过SecureRandom.random_number(9**6)了,但有时会返回 5 个数字,有时会返回 6 个数字。我希望它的长度始终为 6。我也更喜欢它的格式,比如SecureRandom.random_number(9**6)不使用语法6.times.map,这样在我的控制器测试中更容易被存根。

0 投票
2 回答
302 浏览

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)

我只是在尝试创建一个数据库 .. 种子在这个阶段必须做什么(请原谅我,因为我对加密非常陌生)如果有相同问题的答案,我希望你指导我或给我一个答案。 ..两种方式都值得赞赏。

0 投票
2 回答
1102 浏览

java - Java 加密:在我的 AES/CBC/PKCS5Padding 场景中使用什么种子

我正在构建一个应用程序,它将使用 AES/CBC/PKCS5Padding 方法来加密用户设备上的数据,安全性非常重要。我想防止暴力攻击,以防有人掌握数据库。

表中的每一行都有一个关联的标题。我不知道用什么作为种子。我可以执行以下操作之一:

  1. 在源代码中硬编码我自己的种子,但我相信如果有人反编译我的应用程序,可以阅读

  2. 使用用户输入的标题作为种子

  3. 使用我自己的种子和输入的标题的串联

除非有其他方法,否则在上述所有场景中,我可以想象有人找出种子。这对他们能够暴力破解加密数据有用吗?当然,在上述所有场景中,我还将用户密码作为密钥的一部分。

我怎样才能让潜在的黑客变得更加困难?

编辑(重新编辑)

基于以下回复以及我的研究和思考过程。我想我可以做到以下几点。

  1. 让用户输入密码,但不将其存储在数据库中
  2. 在存储敏感数据之前,他们必须输入一个标签来识别它。我会将其作为明文存储在数据库中并将其用作盐
  3. 我将使用用户的密码和带有 PBKDF2 的标签来生成密钥,但不会存储它
  4. 我将使用 #3 生成的密钥来加密敏感数据
  5. 为了解密,我将再次根据用户的密码和行标签生成密钥,并使用它来解密敏感数据

这听起来对吗?如果黑客通过两列(标签明文和加密数据)掌握数据库,他们是否能够推断出任何东西?

编辑 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

0 投票
5 回答
11198 浏览

java - 使用 SecureRandom 生成安全随机数

如何使用Java 类生成6位整数?SecureRandom

我正在尝试以下代码来生成随机数:

它正在生成任何长度的随机数,包括负数。我在课堂上找不到任何方法SecureRandom来提供一系列数字。我想生成一个6位数的随机数

0 投票
2 回答
530 浏览

java - 我应该定期 reSeed SecureRandom 还是自动发生?

我们使用SecureRandom如下(使用Java8):

正在使用的算法是NativePRNG.

我们应该定期播种吗?

正如它所写的那样,NativePRNG 不断地从操作系统接收熵(通过从 /dev/(u)random 读取)

你怎么看?