这段JAVA代码什么意思

来源:百度知道 编辑:UC知道 时间:2024/06/15 04:31:20
import javax.crypto.*;
import java.security.*;

public class Encrypter
{
private static SecureRandom rand = null;

public static byte[] encrypt(String message, Key key) throws Exception
{
checkVersion();
Cipher c = Cipher.getInstance("RSA");
if(rand == null)
{
rand = SecureRandom.getInstance("SHA1PRNG");
Long seed = new Long(System.currentTimeMillis());
rand.setSeed(seed.toString().getBytes());
}
c.init(Cipher.ENCRYPT_MODE, key, rand);
return c.doFinal(message.getBytes("US-ASCII"));
}

public static void checkVersion(){
String version = System.getProperty("java.version");
char minor = version.charAt(2);
if(minor != '5')
throw new RuntimeException("JDK 1.5 is required to run this RSA" +
"application. \nJRE version "+ version + " found");<

javax.crypto.Cipher类提供加密和解密功能,该类是JCE框架的核心。

一,与所有的引擎类一样,可以通过调用Cipher类中的getInstance静态工厂方法得到Cipher对象。

public static Cipher getInstance(String transformation);

public static Cipher getInstance(String transformation,String provider);

参数transformation是一个字符串,它描述了由指定输入产生输出所进行的操作或操作集合。

参数transformation总是包含密码学算法名称,比如DES,也可以在后面包含模式和填充方式。

参数transformation可以是下列两种形式之一:

“algorithm/mode/padding”

“algorithm”

例如下面的例子就是有效的transformation形式:

"DES/CBC/PKCS5Padding"

"DES"

如 果没有指定模式或填充方式,就使用特定提供者指定的默认模式或默认填充方式。例如,SunJCE提供者使用ECB作为DES、DES-EDE和 Blowfish等Cipher的默认模式,并使用PKCS5Padding作为它们默认的填充方案。这意味着在SunJCE提供者中,下列形式的声明是 等价的:Cipher c1=Cipher.getInstance("DES/ECB/PKCS5Padding");

Cipher c1=Cipher.getInstance("DES");

当 以流加密方式请求以块划分的cipher时,可以在模式名后面跟上一次运算需要操作的bit数目,例如采用"DES/CFB8/NoPadding"和 "DES/OFB32/PKCS5P