我用的是bouncycastle的provider。下面的代码是可以的
import java.security.KeyPair;
import java.security.KeyPairGenerator;
import java.security.PublicKey;
import java.security.PrivateKey;KeyPairGenerator kg = KeyPairGenerator.getInstance("RSA");
kg.initialize(1024);
KeyPair k = kg.generateKeyPair();
PublicKey pK = k.getPublic();
PrivateKey sK = k.getPrivate();但是也有问题,用Cipher加密时用
byte[] update(byte[]),然后void doFinal()
编译可以通过但是运行时会产生NonePointException
用void doFinal(byte[])就可以,
还有:
Cipher rsaCipher = Cipher.getInstance("RSA/ECB/PKCS1Padding");
rsaCipher.init(Cipher.ENCRYPT_MODE,Key.getPublic());
FileInputStream in = new FileInputStream(args[1]);
FileOutputStream out = new FileOutputStream(args[2]);
CipherOutputStream cout = new CipherOutputStream(out,rsaCipher);
int b = 0;
while((b = in.read()) != -1){
System.out.print((char)b);
cout.write(b);
}
cout.close();
in.close();在cout.close()处产生NonePointException请教高手 急~
import java.security.KeyPair;
import java.security.KeyPairGenerator;
import java.security.PublicKey;
import java.security.PrivateKey;KeyPairGenerator kg = KeyPairGenerator.getInstance("RSA");
kg.initialize(1024);
KeyPair k = kg.generateKeyPair();
PublicKey pK = k.getPublic();
PrivateKey sK = k.getPrivate();但是也有问题,用Cipher加密时用
byte[] update(byte[]),然后void doFinal()
编译可以通过但是运行时会产生NonePointException
用void doFinal(byte[])就可以,
还有:
Cipher rsaCipher = Cipher.getInstance("RSA/ECB/PKCS1Padding");
rsaCipher.init(Cipher.ENCRYPT_MODE,Key.getPublic());
FileInputStream in = new FileInputStream(args[1]);
FileOutputStream out = new FileOutputStream(args[2]);
CipherOutputStream cout = new CipherOutputStream(out,rsaCipher);
int b = 0;
while((b = in.read()) != -1){
System.out.print((char)b);
cout.write(b);
}
cout.close();
in.close();在cout.close()处产生NonePointException请教高手 急~
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货