當前位置:首頁 » 密碼管理 » 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