`

Java KeyPair

阅读更多
import java.io.FileInputStream;
import java.io.IOException;
import java.security.*;
import java.security.cert.CertificateFactory;
import java.security.spec.EncodedKeySpec;
import java.security.spec.PKCS8EncodedKeySpec;
import java.security.spec.X509EncodedKeySpec;

public class Rsa001
{

public static void main(String[] args) throws Exception
{
Rsa001 rsa=new Rsa001();
KeyPair key=rsa.create();
byte[] pub=key.getPublic().getEncoded();
byte[] pri=key.getPrivate().getEncoded();

byte[] data="abc".getBytes();

byte[] sign=rsa.sign(data, pri);

boolean bl=rsa.check(sign, pub, data);

System.out.println("test   --- "+bl);

}





public static KeyPair create() throws Exception{




  KeyPairGenerator keyGen = KeyPairGenerator.getInstance("RSA");
  keyGen.initialize(1024);
 
  KeyPair keys = keyGen.generateKeyPair();
 
  System.out.println( "create() okay " );
  return keys;
}


public static byte[] sign(byte[] data,byte[] pri) throws Exception{

Signature sig = Signature.getInstance("MD5WithRSA");
KeyFactory keyFactory = KeyFactory.getInstance("RSA");
EncodedKeySpec privateKeySpec = new PKCS8EncodedKeySpec(pri);
PrivateKey privateKey2 = keyFactory.generatePrivate(privateKeySpec);

sig.initSign(privateKey2);

sig.update(data);

byte[] signature = sig.sign();



PrintHex(signature,signature.length);
System.out.println( "sign() oaky " );
return signature;


}



public static byte[] sign2(byte[] data,PrivateKey pri) throws Exception{

Signature sig = Signature.getInstance("MD5WithRSA");

sig.initSign(pri);

sig.update(data);

byte[] signature = sig.sign();

PrintHex(signature,signature.length);
System.out.println( "sign() oaky " );
return signature;
}


public static boolean check(byte[] sign,PublicKey pub,byte[] data) throws Exception{
Signature sig = Signature.getInstance("MD5WithRSA");

KeyFactory keyFactory = KeyFactory.getInstance("RSA");
sig.initVerify(pub);
  sig.update(data);

  if (sig.verify(sign))
  {  
    return true;
  }
  else
  {
  return false;
  }
}





public static boolean check(byte[] sign,byte[] pub,byte[] data) throws Exception{
Signature sig = Signature.getInstance("MD5WithRSA");

KeyFactory keyFactory = KeyFactory.getInstance("RSA");
EncodedKeySpec publicKeySpec = new X509EncodedKeySpec(pub);
    PublicKey publicKey2 = keyFactory.generatePublic(publicKeySpec);
sig.initVerify(publicKey2);

  sig.update(data);

  if (sig.verify(sign))
  {  
    return true;
  }
  else
  {
  return false;
  }
}




public static void PrintHex(byte data[],int len)
{
int i;
int tmp;
String Tmp="";
for(i=0; i<len; i++)
{
if(i%16 == 0)
{
//System.out.println("");

if(i<0x10)
Tmp = "0x000";
if((i<0x100) && (i>=0x10))
Tmp = "0x00";
if((i>=0x100)&&(i<0x1000))
Tmp = "0x0";
if(i>=0x1000)
Tmp = "0x";
//System.out.print(Tmp+Integer.toHexString(i)+"h: ");
}
tmp = data[i];
if(tmp < 0)
tmp = 256 + tmp;
if(tmp <0x10)
System.out.print("0");
else
System.out.print("1");
}
System.out.println("");
}
public String encode(byte[] bytes){
return new sun.misc.BASE64Encoder().encode(bytes);
}
public byte[] decode(String str){
byte[] bt=null;
try{
sun.misc.BASE64Decoder decoder=new sun.misc.BASE64Decoder();
bt=decoder.decodeBuffer(str);

}catch(IOException e){
e.printStackTrace();
}
return bt;
}

}

分享到:
评论

相关推荐

    解决 java.lang.RuntimeException: Could not generate DH keypair异常处理所需的bcprov的jar

    解决 java.lang.RuntimeException: Could not generate DH keypair异常处理。 bcprov-ext-jdk15on-1.60、bcprov-jdk15on-1.60两个包放到jre下的$JAVA_HOME/jre/lib/ext的路径下,然后配置$JAVA_HOME/jre/lib/...

    Could not generate DH keypair 解决方案

    "Could not generate DH keypair" 是一个在使用Diffie-Hellman密钥交换协议时常见的错误消息。这个错误通常出现在尝试建立安全连接,比如HTTPS、SSH或者FTP等使用公钥加密技术的应用中。Diffie-Hellman(DH)是一种...

    Could not generate DH keypair处理办法.rar

    当出现“Could not generate DH keypair”错误时,通常意味着Java运行时环境(JRE)无法生成所需的DH参数,这可能是由于默认的密钥长度不足或缺少必要的加密算法支持。 首先,我们需要理解为何会出现这种错误。Java...

    Could not generate DH keypair;在java在jdk6环境发送https请求完美解决,不需修改JDK

    1.解决jdk低版本向高版本发送请求失败 2.解决Could not generate DH keypair错误 3.不需要修改JDK配置 4.不需要向JDK中添加jar文件 5.向高版本服务器端发送https请求 6.有代码实例,完美运行 7.压缩包中附带使用说明

    解决Could not generate DH keypair

    加密是报:javax.net.ssl.SSLException: java.lang.RuntimeException: Could not generate DH keypair 此处提供 bcprov-ext-jdk15on-154.jar 和 bcprov-jdk15on-154.jar 压缩包中有使用说明

    ssl报错解决generate DH keypair.zip

    加密是报:javax.net.ssl.SSLException: java.lang.RuntimeException: Could not generate DH keypair 此处提供 bcprov-ext-jdk15on-154.jar 和 bcprov-jdk15on-154.jar 压缩包中有使用说明

    Java公钥加密算法RSA.rar

    import java.security.KeyPair; import java.security.KeyPairGenerator; import java.security.PublicKey; import java.security.PrivateKey; import java.security.Security; import org.bouncycastle.jce....

    Java非对称加密源码实例

    首先,Java提供了`java.security`包来支持非对称加密,主要涉及`KeyPairGenerator`、`KeyPair`、`PublicKey`和`PrivateKey`等类。`KeyPairGenerator`用于生成密钥对,`KeyPair`存储公钥和私钥,而`PublicKey`和`...

    JavaRSA生成公钥私钥加解密

    import java.security.KeyPair; import java.security.KeyPairGenerator; import java.security.PrivateKey; import java.security.PublicKey; import java.security.spec.RSAPrivateKeySpec; import java.security....

    Java产生密钥的实例源码

    import java.security.KeyPair; import java.security.KeyPairGenerator; import java.security.NoSuchAlgorithmException; public class KeyGeneratorExample { public static void main(String[] args) { try {...

    获取RSA公钥+私钥

    3. **生成KeyPair**:通过调用`generateKeyPair()`方法,我们可以得到一个包含公钥和私钥的KeyPair对象。 ```java KeyPair keyPair = keyGen.generateKeyPair(); PublicKey publicKey = keyPair.getPublic(); ...

    RSA算法的Java实现

    import java.security.KeyPair; import java.security.KeyPairGenerator; import java.security.SecureRandom; ``` 2. 初始化KeyPairGenerator实例,指定RSA算法,并设置密钥长度(通常为1024、2048或4096位): ``...

    Java生成密钥的实例.zip

    KeyPair keyPair = keyPairGenerator.generateKeyPair(); PublicKey publicKey = keyPair.getPublic(); PrivateKey privateKey = keyPair.getPrivate(); ``` 以上就是生成密钥对的基本过程。在实际应用中,我们可能...

    基于java的生成密钥的实例.zip

    `KeyPair`对象包含了公钥和私钥,它们分别是`java.security.PublicKey`和`java.security.PrivateKey`的实例。我们可以通过调用`getPublic()`和`getPrivate()`方法来获取它们。 生成的密钥对可以存储在本地或者在...

    rsa.zip_RSA 加密解密_rsa java

    import java.security.KeyPair; import java.security.KeyPairGenerator; import java.security.PrivateKey; import java.security.PublicKey; import javax.crypto.Cipher; ``` 2. 初始化KeyPairGenerator,...

    alipay公钥密钥build.rar

    4. 生成KeyPair:调用`generateKeyPair()`方法,这将返回一个包含公钥和私钥的KeyPair对象。 ```java KeyPair keyPair = keyPairGenerator.generateKeyPair(); ``` 5. 获取公钥和私钥:从KeyPair对象中分别提取...

    SQL Server not generate DH keypair.zip

    解决javax.net.ssl.SSLException: java.lang.RuntimeException: Could not generate DH keypair异常所需jar包 也能解决由于https:URL时报的javax.imageio.IIOException: Can't get input stream from URL!出现的问题

    RSA加密

    KeyPair keyPair = keyGen.generateKeyPair(); PrivateKey privateKey = keyPair.getPrivate(); PublicKey publicKey = keyPair.getPublic(); ``` 4. **加密与解密**:Java的`javax.crypto.Cipher`类用于进行...

    RSA数字签名和验证

    KeyPair keys = keygen.genKeyPair(); PublicKey pubkey = keys.getPublic(); PrivateKey prikey = keys.getPrivate(); ``` 3. **转换密钥为字符串**: ```java String pubKey = bytesToHexStr(pubkey....

    javax.net.ssl.SSLException: java.lang.RuntimeException: Could not generate DH keypair 解决方法总结

    然而,当你遇到“javax.net.ssl.SSLException: java.lang.RuntimeException: Could not generate DH keypair”的错误时,这意味着在建立SSL/TLS连接时,Diffie-Hellman(DH)密钥交换算法遇到了问题。DH是一种非对称...

Global site tag (gtag.js) - Google Analytics