当前位置:首页 » 密码管理 » cjavarsa加密解密

cjavarsa加密解密

发布时间: 2023-02-07 08:10:20

A. java RSA 加密解密中 密钥保存并读取,数据加密解密并保存读取 问题

帮你完善了下代码。

importjava.io.File;
importjava.io.FileOutputStream;
importjava.io.FileReader;
importjava.io.OutputStream;
importjava.io.PrintWriter;
importjava.io.Reader;
importjava.util.Map;

publicclassTest{
staticStringpublicKey;
staticStringprivateKey;

publicTest()throwsException{
//TODOAuto-generatedconstructorstub
Map<String,Object>keyMap=RSAUtils.genKeyPair();
publicKey=RSAUtils.getPublicKey(keyMap);
privateKey=RSAUtils.getPrivateKey(keyMap);

//保存密钥,名字分别为publicKey。txt和privateKey。txt;
PrintWriterpw1=newPrintWriter(newFileOutputStream(
"D:/publicKey.txt"));
PrintWriterpw2=newPrintWriter(newFileOutputStream(
"D:/privateKey.txt"));
pw1.print(publicKey);
pw2.print(privateKey);
pw1.close();
pw2.close();

//从保存的目录读取刚才的保存的公钥,
Stringpubkey=readFile("D:/publicKey.txt");//读取的公钥内容;
Stringdata=readFile("D:/1.txt");//需要公钥加密的文件的内容(如D:/1.txt)
byte[]encByPubKeyData=RSAUtils.encryptByPublicKey(data.getBytes(),
pubkey);
//将加密数据base64后写入文件
writeFile("D:/Encfile.txt",Base64Utils.encode(encByPubKeyData).getBytes("UTF-8"));
//加密后的文件保存在

Stringprikey=readFile("D:/privateKey.txt");//从保存的目录读取刚才的保存的私钥,
StringEncdata=readFile("D:/Encfile.txt");//刚才加密的文件的内容;
byte[]encData=Base64Utils.decode(Encdata);
byte[]decByPriKeyData=RSAUtils.decryptByPrivateKey(encData,prikey);
//解密后后的文件保存在D:/Decfile.txt
writeFile("D:/Decfile.txt",decByPriKeyData);
}

privatestaticStringreadFile(StringfilePath)throwsException{
FileinFile=newFile(filePath);
longfileLen=inFile.length();
Readerreader=newFileReader(inFile);

char[]content=newchar[(int)fileLen];
reader.read(content);
System.out.println("读取到的内容为:"+newString(content));
returnnewString(content);
}

privatestaticvoidwriteFile(StringfilePath,byte[]content)
throwsException{
System.out.println("待写入文件的内容为:"+newString(content));
FileoutFile=newFile(filePath);
OutputStreamout=newFileOutputStream(outFile);
out.write(content);
if(out!=null)out.close();
}

publicstaticvoidmain(String[]args)throwsException{
//TODOAuto-generatedmethodstub

newTest();
}

}

测试结果:

读取到的内容为:++lXfZxzNpeA+rHaxmeQ2qI+5ES9AF7G6KIwjzakKsA08Ly+1y3dp0BnoyHF7/Pj3AS28fDmE5piea7w36vp4E3Ts+F9vwIDAQAB
读取到的内容为:锘县ahaha

B. Java生成的RSA密钥对,用C#加密解密,怎么弄

本身就是WebService,问题是服务器是Java写的,现在客户端要用C#写,这两个算是跨平台了服务器的(Java)传过来的密钥对(公钥/私钥)在C#这边是加密解密不了。这才是关键问题所在

C. java RSA 加解密

import java security Key;

import java security KeyFactory;

import java security KeyPair;

import java security KeyPairGenerator;

import java security PrivateKey;

import java security PublicKey;

import java security interfaces RSAPrivateKey;

import java security interfaces RSAPublicKey;

import java security spec PKCS EncodedKeySpec;

import java security spec X EncodedKeySpec;

import javax crypto Cipher;

import sun misc BASE Decoder;

import sun misc BASE Encoder;

public class RSACoder {

/**

* 得到公钥

* @param key 密钥字符串(经过base 编码)

* @throws Exception

*/

public static PublicKey getPublicKey(String key) throws Exception {

byte[] keyBytes;

keyBytes = (new BASE Decoder()) decodeBuffer(key);

X EncodedKeySpec keySpec = new X EncodedKeySpec(keyBytes);

KeyFactory keyFactory = KeyFactory getInstance( RSA );

PublicKey publicKey = keyFactory generatePublic(keySpec);

return publicKey;

}

/**

* 得到私钥

* @param key 密钥字符串(经过base 编码)

* @throws Exception

*/

public static PrivateKey getPrivateKey(String key) throws Exception {

byte[] keyBytes;

keyBytes = (new BASE Decoder()) decodeBuffer(key);

PKCS EncodedKeySpec keySpec = new PKCS EncodedKeySpec(keyBytes);

KeyFactory keyFactory = KeyFactory getInstance( RSA );

PrivateKey privateKey = keyFactory generatePrivate(keySpec);

return privateKey;

}

/**

* 得到密钥字符串(经过base 编码)

* @return

*/

public static String getKeyString(Key key) throws Exception {

byte[] keyBytes = key getEncoded();

String s = (new BASE Encoder()) encode(keyBytes);

return s;

}

public static void main(String[] args) throws Exception {

KeyPairGenerator keyPairGen = KeyPairGenerator getInstance( RSA );

//密钥位数

keyPairGen initialize( );

//密钥对

KeyPair keyPair = keyPairGen generateKeyPair();

// 公钥

PublicKey publicKey = (RSAPublicKey) keyPair getPublic();

// 私钥

PrivateKey privateKey = (RSAPrivateKey) keyPair getPrivate();

String publicKeyString = getKeyString(publicKey);

System out println( public: + publicKeyString);

String privateKeyString = getKeyString(privateKey);

System out println( private: + privateKeyString);

//加解密类

Cipher cipher = Cipher getInstance( RSA );//Cipher getInstance( RSA/ECB/PKCS Padding );

//明文

byte[] plainText = 我们都很好!邮件 getBytes();

//加密

cipher init(Cipher ENCRYPT_MODE publicKey);

byte[] enBytes = cipher doFinal(plainText);

//通过密钥字符串得到密钥

publicKey = getPublicKey(publicKeyString);

privateKey = getPrivateKey(privateKeyString);

//解密

cipher init(Cipher DECRYPT_MODE privateKey);

byte[]deBytes = cipher doFinal(enBytes);

publicKeyString = getKeyString(publicKey);

System out println( public: +publicKeyString);

privateKeyString = getKeyString(privateKey);

System out println( private: + privateKeyString);

String s = new String(deBytes);

System out println(s);

}

lishixin/Article/program/Java/hx/201311/25516

D. RSA c#加密 java端解密 解密出来的总是乱码

RSA 加密的话,一共有几个参数,你需要看看你的填充(padding)是不是配置成一样的,另外就是你的块长度是不是两边一样了。一般来说解密不对都是因为这些配置没有对。

E. java生成rsa密钥,c++可以直接使用密钥解密吗

可以的,RSA加密解密有一套规则的,不同的语言都会遵循,只是实现的方式不一样。
用对应的的公钥就可以进行解密

F. javarsa加密c#解密失败

系统bug。当软件javarsa的系统出现系统bug时,就会导致该软件在解密c井的程序的时候出现解密失败的情况,只需要将该软件卸载后重新安装该软件即可。

G. 如何实现用javascript实现rsa加解密

用javascript实现rsa加解密的实现方式是通过PKCS完成的。
1、整个定义的function

function pkcs1pad2(s,n) {
if(n < s.length + 11) { // TODO: fix for utf-8
alert("Message too long for RSA");
return null;
}
var ba = new Array();
var i = s.length - 1;
while(i >= 0 && n > 0) {
var c = s.charCodeAt(i--);
//UTF-8编码为变长字节,使用实际的字节来记录
if(c < 128) { // encode using utf-8
ba[--n] = c;
}
else if((c > 127) && (c < 2048)) {
ba[--n] = (c & 63) | 128;
ba[--n] = (c >> 6) | 192;
}
else {
ba[--n] = (c & 63) | 128;
ba[--n] = ((c >> 6) & 63) | 128;
ba[--n] = (c >> 12) | 224;
}
}
//实际输入拼装结束,将下一位赋值为0标记结束
ba[--n] = 0;
var rng = new SecureRandom();
var x = new Array();
//拼接随机非0字节
while(n > 2) { // random non-zero pad
x[0] = 0;
while(x[0] == 0) rng.nextBytes(x);
ba[--n] = x[0];
}
//这两位做简单的校验
ba[--n] = 2;
ba[--n] = 0;
return new BigInteger(ba);
}
该方法中对UTF-8字符进行了兼容,并且在拼装完实际输入的字符后,还拼装了随机的字节,使用拼装后的字符串去加密。由于每次拼装的结果是随机的,这样每次加密后的密文都不同。
2、调用方法:;
function RSAEncrypt(text) {
var m = pkcs1pad2(text,(this.n.bitLength()+7)>>3);
if(m == null) return null;
var c = this.doPublic(m);
if(c == null) return null;
var h = c.toString(16);
if((h.length & 1) == 0) return h; else return "0" + h;
}

H. 用JAVA实现RSA算法的加密解密 跪求

#####################################
我已经说的很清楚了。。。只要把我说的用程序写下来,加个菜单就行了。。。要是这样都不会的话。。。那就当我没说了。。。

####################################
RSA。。。难道你自己建立PKI,否则没法弄。。。

你说这个题。。直接手算的了。。。又不是大数

N = P * Q = 1739
N的欧拉函数
F(N) = ( p - 1 ) * ( Q - 1 ) = 1656

然后算模拟嘛。。。5 模 1656的逆。。。

1656 = 1 + 1655 = 1 + 5 * 331
所以5模1656的逆就是-331 = 1656 - 331 = 1325
所以D = 1325啦

你要加密你至少告诉我明文是什么吧。。。。
如果加密明文M的话,密文C = M 模 1739的E次幂

解密是M = C 模1739的D次幂

小数直接手算啦~费马小定理,从左向右计算,可以简化一部分计算,不过你这个题已经差不多最简化了。。。。你这个题实际上就是用来手算的。真正RSA一般人根本做不出来,光是素性检验就很麻烦了。。而且就算你能实现,你有PKI吗???没有PKI。。。RSA的安全从何而来???

我们也上学期刚学的密码。。。呵呵~~~有问题继续问。。。现在无聊啊。。

I. 在JAVA使用RSA加密的密串和签名如何在C#里解密和验签

你好,你需要知道RSA的秘钥和签名的算法。
首先你需要有RSA的私钥,利用私钥将encrypt的部分进行解密。然后利用签名的算法对解密的结果做一次签名的运算,如何结果和发送过来的sign一样的话,签名就是没有问题的。
C#有RSA和签名算法的库,所以你重要的是有秘钥和知道签名的算法。

热点内容
iphone5s照片文件夹 发布:2025-08-23 15:32:20 浏览:799
微博微信登录密码是什么 发布:2025-08-23 15:13:38 浏览:199
衡量一个存储器的指标通常是什么 发布:2025-08-23 15:12:16 浏览:58
数据库删除实例 发布:2025-08-23 14:21:27 浏览:315
qqandroid反编译 发布:2025-08-23 14:02:23 浏览:908
高级语言编译有哪些 发布:2025-08-23 13:23:49 浏览:575
win32编译 发布:2025-08-23 13:19:16 浏览:659
备份数据库日志 发布:2025-08-23 13:07:05 浏览:519
php模块开发 发布:2025-08-23 12:58:43 浏览:924
java读写数据库 发布:2025-08-23 12:41:40 浏览:405