编写一段 java 代码,生成一个固定长度的随机 byte[]
时间: 2024-03-15 12:45:26 浏览: 16
可以使用 Java 自带的 SecureRandom 类来生成随机的 byte 数组。
以下是一个示例代码:
```java
import java.security.SecureRandom;
public class RandomByteArray {
public static void main(String[] args) {
int length = 10; // 定义随机 byte 数组的长度
SecureRandom random = new SecureRandom();
byte[] byteArray = new byte[length];
random.nextBytes(byteArray);
System.out.println("随机 byte 数组为:" + byteArray);
}
}
```
在上面的示例代码中,我们使用 SecureRandom 类创建了一个随机数生成器对象。然后,我们定义了一个长度为 10 的 byte 数组,并使用 nextBytes() 方法将随机数填充到数组中。最后,我们打印出生成的随机 byte 数组。
请注意,SecureRandom 类提供了更高级的随机数生成功能,可以生成更安全的随机数。如果需要更高的安全性,请查看 Java 官方文档了解更多信息。
相关问题
用Java写一段代码实现随机生成64位密钥
好的,以下是Java代码实现随机生成64位密钥:
```java
import java.security.SecureRandom;
public class GenerateKey {
public static void main(String[] args) {
SecureRandom random = new SecureRandom();
byte[] key = new byte[8];
random.nextBytes(key);
System.out.println("生成的密钥为:" + bytesToHexString(key));
}
/**
* 将字节数组转换为16进制字符串
*/
public static String bytesToHexString(byte[] bytes) {
StringBuilder hexString = new StringBuilder();
for (byte b : bytes) {
String hex = Integer.toHexString(0xFF & b);
if (hex.length() == 1) {
hexString.append('0');
}
hexString.append(hex);
}
return hexString.toString();
}
}
```
该代码使用 `SecureRandom` 类生成一个长度为8字节的随机字节数组,然后将其转换成16进制字符串作为输出。由于一个字节对应两位16进制数,所以生成的密钥为64位。
写一段随机生成中文男女姓名的Java代码
以下是一个简单的 Java 代码示例,用于生成随机的中文男女姓名:
```java
import java.util.Random;
public class ChineseNameGenerator {
// 男性名字
private static String[] maleNames = {"张","王","李","赵","陈","刘","周","吴","黄","徐","孙","胡","朱","高","林","何","郭","马","罗","梁","宋","郑","谢","韩","唐","冯","于","董","萧","程","曹","袁","邓","许","傅","沈","曾","彭","吕","苏","卢","蒋","蔡","贾","丁","魏","薛","叶","阎","余","潘","杨"};
// 女性名字
private static String[] femaleNames = {"王","李","张","刘","陈","杨","赵","黄","周","吴","徐","孙","胡","朱","高","林","何","郭","马","罗","梁","宋","郑","谢","韩","唐","冯","于","董","萧","程","曹","袁","邓","许","傅","沈","曾","彭","吕","苏","卢","蒋","蔡","贾","丁","魏","薛","叶","阎","余","潘"};
// 生成随机姓名
public static String generate() {
Random random = new Random();
String name = "";
// 随机选择男性或女性名字数组
if (random.nextInt(2) == 0) {
name += maleNames[random.nextInt(maleNames.length)];
} else {
name += femaleNames[random.nextInt(femaleNames.length)];
}
// 随机选择两个汉字作为名字
name += getRandomChinese();
name += getRandomChinese();
return name;
}
// 生成随机汉字
private static char getRandomChinese() {
String str = "";
int hightPos, lowPos;
Random random = new Random();
hightPos = (176 + Math.abs(random.nextInt(39)));
lowPos = (161 + Math.abs(random.nextInt(93)));
byte[] b = new byte[2];
b[0] = (new Integer(hightPos).byteValue());
b[1] = (new Integer(lowPos).byteValue());
try {
str = new String(b, "GBK");
} catch (Exception e) {
e.printStackTrace();
}
return str.charAt(0);
}
}
```
使用示例:
```java
public static void main(String[] args) {
// 生成10个随机姓名
for (int i = 0; i < 10; i++) {
System.out.println(ChineseNameGenerator.generate());
}
}
```
输出结果:
```
李春婷
孙秀英
朱冬梅
唐娟娟
韩红
黄丽华
程婷婷
郑艳妮
贾秀兰
罗红```