Skip to content
/ JRandom Public

Java Secure Random Lib | Java 安全随机库 | 使用汇编调用 CPU 的 RDRAND 指令后通过 JNI 提供给 Java 程序 | 支持 Windows 和 Linux

License

Notifications You must be signed in to change notification settings

4ra1n/JRandom

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

12 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

JRandom

JRandom 是一个简单的 Java 随机库,不同于大部分随机库,它使用独特的技术确保安全性

它会尝试使用 CPURDRAND 指令获取随机数,如果不支持将会使用 SecureRandom

核心代码

get_rand_int:
    test rdi, rdi
    je fail
    rdrand eax
    jc success
fail:
    xor eax, eax
    ret
success:
    mov [rdi], eax
    mov eax, 1
    ret

本项目已发布在 Maven 中央仓库可直接引入

<dependency>
    <groupId>io.github.4ra1n</groupId>
    <artifactId>jrandom</artifactId>
    <version>0.0.2</version>
</dependency>

Java 层使用会很简单

JRandom random = new JRandom();
for (int i = 0; i < 10; i++) {
    System.out.println(random.randomString(10));
}

顺便支持了一些常见的 API

  • getInt
  • getInt(int start, int end)
  • randomString(int length)
  • randomBytes(int length)
  • randomEle(List list)
  • randomNumbers(int n)

目前支持 WindowsLinux64

About

Java Secure Random Lib | Java 安全随机库 | 使用汇编调用 CPU 的 RDRAND 指令后通过 JNI 提供给 Java 程序 | 支持 Windows 和 Linux

Topics

Resources

License

Stars

Watchers

Forks