【发布时间】:2013-08-02 15:42:34
【问题描述】:
有没有办法生成类似的串行/十六进制代码:xxxx-xxxx-xxxx-xxxx-xxxx-xxxx 使用java api?当产品破译它应该能够提取的代码时
- 姓名
- 有效期
- Mac 地址
- 其他信息
将根据上述因素生成代码。我尝试使用私钥/公钥RSA/ECB/PKCS1Padding。然后转成HEX,但是需要4096的私钥sixe,生成的hex代码太长!
public class ProductKeyGenerator {
private static final String transformation = "RSA/ECB/PKCS1Padding";
public static void main(String[] args) {
String cleartext = "CN=CompanyName;mac=some mac;@host=somehost;email=admin@somedomain.com;issued=01/01/20013;expire=12/12/2013";
ProductKeyGenerator pgen = new ProductKeyGenerator();
String productKey = pgen.generate(cleartext);
System.out.println(productKey);
}
...
...
...
String generate(String data) {
//encrypted hex
String hexEnc = null;
try {
//--sign
String signature = sign(data);
data += ";sign=" + signature;
byte[] dataBytes = data.getBytes("utf-8");
//encrypt
byte[] encBytes = encrypt(dataBytes);
hexEnc = Hex.encodeHexString(encBytes);
} catch (Exception e) {
e.printStackTrace();
}
return hexEnc;
}
String sign(String text) {
String signed = null;
try {
Security.addProvider(new org.bouncycastle.jce.provider.BouncyCastleProvider());
byte[] data = text.getBytes("utf-8");
byte[] digitalSignature = signData(data);
signed = Hex.encodeHexString(digitalSignature);
} catch (Exception e) {
e.printStackTrace();
}
return signed;
}
...
...
...
}
【问题讨论】:
-
您想要的序列号的最大长度是多少?
标签: java security encryption code-access-security