goja-core/src/main/java/goja/core/kits/lang/KeyCodeKit.java
public static String generateKeyCode(String productSerialNo, String codeKey) {
        return digestPassword(StringUtils.leftPad(productSerialNo, 10, StringPool.ZERO)
                + StringUtils.leftPad(codeKey, 5, StringPool.ZERO)
                + RandomStringUtils.randomAlphanumeric(5)
                + DateTime.now().getMillis());
    }
public static String generateKeyCode(String productSerialNo, String codeKey) {
        return digestPassword(StringUtils.leftPad(productSerialNo, 10, StringPool.ZERO)
                + StringUtils.leftPad(codeKey, 5, StringPool.ZERO)
                + RandomStringUtils.randomAlphanumeric(5)
                + DateTime.now().getMillis());
    }
public static String generateKeyCode ( String productSerialNo , String codeKey ) { return digestPassword ( StringUtils . leftPad ( productSerialNo , 10 , StringPool . ZERO ) + StringUtils . leftPad ( codeKey , 5 , StringPool . ZERO ) + RandomStringUtils . randomAlphanumeric ( 5 ) + DateTime . now ( ) . getMillis ( ) ) ; }
产品序列号前10位+KEY前5位+5位随机数字和字符（大小写）+时间戳 MD5 加密

@param productSerialNo 产品序列号
@param codeKey         产品代码
@return 授权码
产品序列号前10位 + KEY前5位 + 5位随机数字和字符（大小写） + 时间戳 MD5 加密