您的位置:首页 > 移动开发 > Android开发

基于Android与.net服务器RSA加密算法的数据加密

2016-07-29 18:08 344 查看
public class EncryptCode {

private static File file;

/**
* 加密方法
* source: 源数据
*/
public static String encrypt(String source) throws Exception {
// 用证书的公钥加密
CertificateFactory cff = CertificateFactory.getInstance("X.509");
FileInputStream fis1 = new FileInputStream(file); // 证书文件
Certificate cf = cff.generateCertificate(fis1);
PublicKey pk1 = cf.getPublicKey();           // 得到证书文件携带的公钥
BASE64Encoder bse = new BASE64Encoder();
Cipher c1 = Cipher.getInstance("RSA/ECB/PKCS1Padding");      // 定义算法:RSA
c1.init(Cipher.ENCRYPT_MODE,pk1);
byte[] msg1 = c1.doFinal(source.getBytes());            // 加密后的数据
String encode = bse.encode(msg1); //使用base64进行编码
return encode; //返回加密结果
}

/**
* 加密证书的拷贝
*/

public static void copyDb(String certificate,Context ctx) {
InputStream in = null;
FileOutputStream out = null;

try {
//获取本地目录路径
File filesDir = ctx.getFilesDir();
file = new File(filesDir,certificate);
if (file.exists()) {
return;
}
AssetManager assets = ctx.getAssets();//资产管理器
in = assets.open(certificate);
out = new FileOutputStream(file);
int len;
byte[] buffer = new byte[1024];
while ((len = in.read(buffer)) != -1) {
out.write(buffer,0,len);
}

} catch (IOException e) {
e.printStackTrace();
} finally {
try {
in.close();
out.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息