Keygen.java
package cn.home1.environment;
import cn.home1.oss.lib.common.crypto.AesCbcKey;
import cn.home1.oss.lib.common.crypto.AesKeyGenerator;
import cn.home1.oss.lib.common.crypto.JwtKeyGenerator;
import cn.home1.oss.lib.common.crypto.RsaKeys;
import org.springframework.boot.Banner;
import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.builder.SpringApplicationBuilder;
public class Keygen implements CommandLineRunner {
public static void main(final String... args) {
new SpringApplicationBuilder()
.sources(Keygen.class)
.bannerMode(Banner.Mode.OFF)
.run(args);
}
@Override
public void run(final String... args) throws Exception {
if (args.length == 0) {
System.err.println(this.usage());
} else {
final String option = args[0];
final String result = this.generateKey(option);
if (result != null) {
System.out.print(result);
} else {
System.err.println(this.usage());
}
}
}
public String generateKey(final String option) {
final String spec;
final String result;
switch (option) {
case "-aes":
spec = AesCbcKey.keySpec(256);
result = new AesKeyGenerator(spec).generateKey().toString();
break;
case "-jwt":
spec = "HS512";
result = new JwtKeyGenerator(spec).generateKey().toString();
break;
case "-rsa":
final int keySize = 1024;
result = RsaKeys.generateRsaKey(keySize);
break;
// support "-jks" ?
default:
result = null;
break;
}
return result;
}
private String usage() {
return "" + //
"Usage: java -jar oss-lib-common-*.jar [OPTION]\n" + //
"\t-aes\n" + //
"\t\tgenerate random AES CBC key\n" + //
"\t-jwt\n" + //
"\t\tgenerate random JWT HS512 key\n" + //
"\t-rsa\n" + //
"\t\tgenerate random RSA1024 key\n" + //
"";
}
}