導航:首頁 > 源碼編譯 > rsa2加密源碼

rsa2加密源碼

發布時間:2023-12-02 10:46:57

❶ 四、公鑰和私鑰,加密和數字簽名

本文涉及到支付寶SDK的內容,均摘自支付寶開放平台。

因為支付寶SDK使用RSA來加密和生成數字簽名,所以本文中涉及到的概念也都是針對於RSA的。


一對兒密鑰生成後,會有公鑰和私鑰之分,我們需要把私鑰保存下來,而把公鑰發布出去。一對兒公鑰和私鑰,不能由其中一個導出另一個。

比如使用支付寶SDK的時候,我們商戶端會生成一對兒密鑰A和B,A是私鑰,B是公鑰,支付寶也會生成一對兒密鑰C和D,C是私鑰,D是公鑰。我們商戶端需要把商戶端私鑰A保存下來,而把商戶端公鑰B發布出去給支付寶,支付寶需要把支付寶私鑰C保存下來,而把支付寶公鑰D發布出去給我們商戶端。

加密是指我們使用一對兒密鑰中的一個來對數據加密,而使用另一個來對數據解密的技術,需要注意的是公鑰和私鑰都可以用來加密,也都可以用來解密 ,並不是規定死了只能用公鑰加密私鑰解密,但是加解密必須是一對兒密鑰之間的互相加解密,否則不能成功。

加密的目的是為了保證數據的不可讀性,防止數據在傳輸過程中被截獲。

知道了加密這個概念,我們先看一下支付寶的加密過程,再引出數字簽名這個概念。接著第1小節的例子,當我們商戶端和支付寶互相發布了公鑰之後,我們商戶端手裡就有 商戶端私鑰 支付寶公鑰 兩個密鑰,支付寶手裡也有 商戶端公鑰 支付寶私鑰 兩個密鑰。現在假設我們商戶端要給支付寶傳輸訂單信息,那麼為了保證傳輸訂單信息時數據的安全性,結合我們商戶端手裡所擁有的密鑰,可以有兩套加密方案

貌似這兩套加密方案都能達到對訂單信息加密的效果,而且如果採用方案二,我們商戶端甚至只需要存儲支付寶公鑰這一個密鑰,都不用去申請一對兒商戶端的公私鑰來維護,支付寶也不用保存我們一堆商戶那麼多的商戶端公鑰了,這不是更簡單嗎,那為什麼支付寶開放平台讓我們採用的是方案一而不是方案二呢?下面來回答一下。

支付寶開放平台說明:當我們採用RSA(1024位密鑰)來加密的時候,支付寶分配給所有商戶的支付寶公鑰都是一樣的,即支付寶針對那麼多的商戶只負責維護一對兒支付寶公私鑰,這就意味著支付寶公鑰隨便什麼人拿到後都是一樣的;而當我們採用RSA2(2048位密鑰)來加密的時候,支付寶會分配給每個商戶單獨的一個支付寶公鑰,即支付寶為每一個的商戶單獨的維護一對獨立的支付寶公私鑰,當然一個商戶下的多個App的支付寶公鑰是一樣的。RSA是早就支持的,RSA2是最近才支持的。

知道了上面這段話,現在假設我們採用的是方案二,並且採用RSA加密(很多老業務並沒有使用RSA2加密),業務邏輯將會是下面這樣。

這就出問題了, RSA加密下,支付寶公鑰是公開發布的,而且所有的商戶用的都是同一個支付寶公鑰(上面聲明了RSA2加密下,支付寶才針對每個商戶維護了一對兒公私鑰),攻擊者很容易就能獲取到,而 notify_url 也很容易被截獲,那攻擊者拿到這兩個東西就可以做和商戶一樣的操作來發起支付請求,這樣就會一直給小明充錢了。

所以 支付寶就需要確認支付請求確實是商戶發給他們的,而不是攻擊者發給他們的。 這就用到了 數字簽名 ,我們會通過方案一的實現流程來引出數字簽名的具體概念。如果我們採用的是方案一,我們商戶端保存的就是商戶端私鑰和支付寶公鑰,而支付寶保存的就是需要存著商戶端公鑰和支付寶私鑰的,業務邏輯將會是下面這樣。

這樣就可以保證交易的安全性了,我們也可以看出使用支付寶SDK保證交易的安全性注重的其實不是訂單信息是否加密,而是如何確保商戶端和支付寶能夠互相確認身份,訂單信息是明文的,但是後面拼接了數字簽名。

數字簽名其實就是明文數據加密之後得到的一個密文,只不過它是用私鑰加密生成的而已,我們一般會把數字簽名拼接在明文數據後面一起傳遞給接收方,接收方收到後用公鑰解密數字簽名,從而驗證發送方的身份、以及明文數據是否被篡改。數字簽名的生成過程其實就是一個加密過程,數字簽名的驗簽過程就是一個解密過程。

數字簽名的目的有兩個:一、發送方和接收方互相驗證身份;二、驗證數據是否被篡改。


從上面第一部分我們知道為了確保商戶和支付寶交易的安全性,約定採用的是給訂單信息加數字簽名傳輸的方式。支付寶也為我們提供了 一鍵生成RSA密鑰的工具 ,可以幫助我們很快的生成一對商戶端公私鑰。以下會對支付寶SDK的支付流程做個大概的解釋,並點出實際開發中我們使用支付寶SDK時應該注意的地方。

由我們商戶端自己生成的RSA私鑰(必須與商戶端公鑰是一對),生成後要保存在服務端,絕對不能保存在客戶端,也絕對不能從服務端傳輸給客戶端。

用來對訂單信息加簽,加簽過程一定要在服務端完成,絕對不能在客戶端做加,客戶端只負責用加簽後的訂單信息調起支付寶來支付。

由我們商戶端自己生成的RSA公鑰(必須與商戶端私鑰是一對),生成後需要填寫在支付寶開放平台。

用來給支付寶服務端驗簽經過我們加簽後的訂單信息,以確保訂單信息確實是我們商戶端發給支付寶的,並且確保訂單信息在傳輸過程中未被篡改。

這個和我們就沒關系了,支付寶私鑰是他們自己生成的,也是他們自己保存的。

用來對支付結果進行加簽。

支付寶公鑰和支付寶私鑰是一對,也是支付寶生成的,當我們把商戶端公鑰填寫在支付寶開放平台後,平台就會給我們生成一個支付寶公鑰,我們可以復制下來保存在服務端,同樣不要保存在客戶端,並且不要傳輸給客戶端。

用來讓服務端對支付寶服務端返給我們的同步或非同步支付結果進行驗簽,以確保支付結果確實是由支付寶服務端返給我們服務端的,而且沒有被篡改,對支付結果的驗簽工作也一定要在服務端完成。

上面已經說過了: 訂單信息的加簽和支付結果的驗簽是一定要在服務端做的,絕對不能在客戶端做。

下面是在客戶端對訂單信息加簽的過程,僅僅是為了模擬服務端來表明訂單信息是如何通過加簽最終轉變為orderString的, 千萬不要覺得訂單信息的加簽過程也可以放在客戶端完成

假設我們服務端收到了來自支付寶服務端的支付結果,即: 支付結果+數字簽名

那麼我們服務端就會對支付結果進行驗簽,怎麼個驗法呢?

❷ 求RSA演算法的源代碼(c語言)

這個是我幫個朋友寫的,寫的時候發現其實這個沒那麼復雜,不過,時間復雜度要高於那些成型了的,為人所熟知的rsa演算法的其他語言實現.
#include
int
candp(int
a,int
b,int
c)
{
int
r=1;
b=b+1;
while(b!=1)
{
r=r*a;
r=r%c;
b--;
}
printf("%d",r);
return
r;
}
void
main()
{
int
p,q,e,d,m,n,t,c,r;
char
s;
{printf("input
the
p:\n");
scanf("%d\n",&p);
printf("input
the
q:\n");
scanf("%d%d\n",&p);
n=p*q;
printf("so,the
n
is
%3d\n",n);
t=(p-1)*(q-1);
printf("so,the
t
is
%3d\n",t);
printf("please
intput
the
e:\n");
scanf("%d",&e);
if(e<1||e>t)
{printf("e
is
error,please
input
again;");
scanf("%d",&e);}
d=1;
while
(((e*d)%t)!=1)
d++;
printf("then
caculate
out
that
the
d
is
%5d",d);
printf("if
you
want
to
konw
the
cipher
please
input
1;\n
if
you
want
to
konw
the
plain
please
input
2;\n");
scanf("%d",&r);
if(r==1)
{
printf("input
the
m
:"
);/*輸入要加密的明文數字*/
scanf("%d\n",&m);
c=candp(m,e,n);
printf("so
,the
cipher
is
%4d",c);}
if(r==2)
{
printf("input
the
c
:"
);/*輸入要解密的密文數字*/
scanf("%d\n",&c);
m=candp(c,d,n);
printf("so
,the
cipher
is
%4d\n",m);
printf("do
you
want
to
use
this
programe:yes
or
no");
scanf("%s",&s);
}while(s=='y');
}
}

❸ 如何使用RSA簽名給給信息加密和解密

java">{
publicstaticfinalStringKEY_ALGORITHM="RSA";
_ALGORITHM="MD5withRSA";

_KEY="RSAPublicKey";
_KEY="RSAPrivateKey";

/**
*用私鑰對信息生成數字簽名
*
*@paramdata
*加密數據
*@paramprivateKey
*私鑰
*
*@return
*@throwsException
*/
publicstaticStringsign(byte[]data,StringprivateKey)throwsException{
//解密由base64編碼的私鑰
byte[]keyBytes=decryptBASE64(privateKey);

//構造PKCS8EncodedKeySpec對象
=newPKCS8EncodedKeySpec(keyBytes);

//KEY_ALGORITHM指定的加密演算法
KeyFactorykeyFactory=KeyFactory.getInstance(KEY_ALGORITHM);

//取私鑰匙對象
PrivateKeypriKey=keyFactory.generatePrivate(pkcs8KeySpec);

//用私鑰對信息生成數字簽名
Signaturesignature=Signature.getInstance(SIGNATURE_ALGORITHM);
signature.initSign(priKey);
signature.update(data);

returnencryptBASE64(signature.sign());
}

/**
*校驗數字簽名
*
*@paramdata
*加密數據
*@parampublicKey
*公鑰
*@paramsign
*數字簽名
*
*@return校驗成功返回true失敗返回false
*@throwsException
*
*/
publicstaticbooleanverify(byte[]data,StringpublicKey,Stringsign)
throwsException{

//解密由base64編碼的公鑰
byte[]keyBytes=decryptBASE64(publicKey);

//構造X509EncodedKeySpec對象
X509EncodedKeySpeckeySpec=newX509EncodedKeySpec(keyBytes);

//KEY_ALGORITHM指定的加密演算法
KeyFactorykeyFactory=KeyFactory.getInstance(KEY_ALGORITHM);

//取公鑰匙對象
PublicKeypubKey=keyFactory.generatePublic(keySpec);

Signaturesignature=Signature.getInstance(SIGNATURE_ALGORITHM);
signature.initVerify(pubKey);
signature.update(data);

//驗證簽名是否正常
returnsignature.verify(decryptBASE64(sign));
}

/**
*解密<br>
*用私鑰解密
*
*@paramdata
*@paramkey
*@return
*@throwsException
*/
publicstaticbyte[]decryptByPrivateKey(byte[]data,Stringkey)
throwsException{
//對密鑰解密
byte[]keyBytes=decryptBASE64(key);

//取得私鑰
=newPKCS8EncodedKeySpec(keyBytes);
KeyFactorykeyFactory=KeyFactory.getInstance(KEY_ALGORITHM);
KeyprivateKey=keyFactory.generatePrivate(pkcs8KeySpec);

//對數據解密
Ciphercipher=Cipher.getInstance(keyFactory.getAlgorithm());
cipher.init(Cipher.DECRYPT_MODE,privateKey);

returncipher.doFinal(data);
}

/**
*解密<br>
*用私鑰解密
*
*@paramdata
*@paramkey
*@return
*@throwsException
*/
publicstaticbyte[]decryptByPublicKey(byte[]data,Stringkey)
throwsException{
//對密鑰解密
byte[]keyBytes=decryptBASE64(key);

//取得公鑰
X509EncodedKeySpecx509KeySpec=newX509EncodedKeySpec(keyBytes);
KeyFactorykeyFactory=KeyFactory.getInstance(KEY_ALGORITHM);
KeypublicKey=keyFactory.generatePublic(x509KeySpec);

//對數據解密
Ciphercipher=Cipher.getInstance(keyFactory.getAlgorithm());
cipher.init(Cipher.DECRYPT_MODE,publicKey);

returncipher.doFinal(data);
}

/**
*加密<br>
*用公鑰加密
*
*@paramdata
*@paramkey
*@return
*@throwsException
*/
publicstaticbyte[]encryptByPublicKey(byte[]data,Stringkey)
throwsException{
//對公鑰解密
byte[]keyBytes=decryptBASE64(key);

//取得公鑰
X509EncodedKeySpecx509KeySpec=newX509EncodedKeySpec(keyBytes);
KeyFactorykeyFactory=KeyFactory.getInstance(KEY_ALGORITHM);
KeypublicKey=keyFactory.generatePublic(x509KeySpec);

//對數據加密
Ciphercipher=Cipher.getInstance(keyFactory.getAlgorithm());
cipher.init(Cipher.ENCRYPT_MODE,publicKey);

returncipher.doFinal(data);
}

/**
*加密<br>
*用私鑰加密
*
*@paramdata
*@paramkey
*@return
*@throwsException
*/
publicstaticbyte[]encryptByPrivateKey(byte[]data,Stringkey)
throwsException{
//對密鑰解密
byte[]keyBytes=decryptBASE64(key);

//取得私鑰
=newPKCS8EncodedKeySpec(keyBytes);
KeyFactorykeyFactory=KeyFactory.getInstance(KEY_ALGORITHM);
KeyprivateKey=keyFactory.generatePrivate(pkcs8KeySpec);

//對數據加密
Ciphercipher=Cipher.getInstance(keyFactory.getAlgorithm());
cipher.init(Cipher.ENCRYPT_MODE,privateKey);

returncipher.doFinal(data);
}

/**
*取得私鑰
*
*@paramkeyMap
*@return
*@throwsException
*/
(Map<String,Object>keyMap)
throwsException{
Keykey=(Key)keyMap.get(PRIVATE_KEY);

returnencryptBASE64(key.getEncoded());
}

/**
*取得公鑰
*
*@paramkeyMap
*@return
*@throwsException
*/
(Map<String,Object>keyMap)
throwsException{
Keykey=(Key)keyMap.get(PUBLIC_KEY);

returnencryptBASE64(key.getEncoded());
}

/**
*初始化密鑰
*
*@return
*@throwsException
*/
publicstaticMap<String,Object>initKey()throwsException{
KeyPairGeneratorkeyPairGen=KeyPairGenerator
.getInstance(KEY_ALGORITHM);
keyPairGen.initialize(1024);

KeyPairkeyPair=keyPairGen.generateKeyPair();

//公鑰
RSAPublicKeypublicKey=(RSAPublicKey)keyPair.getPublic();

//私鑰
RSAPrivateKeyprivateKey=(RSAPrivateKey)keyPair.getPrivate();

Map<String,Object>keyMap=newHashMap<String,Object>(2);

keyMap.put(PUBLIC_KEY,publicKey);
keyMap.put(PRIVATE_KEY,privateKey);
returnkeyMap;
}
}

❹ java RSA演算法實現256位密鑰怎麼做

【下載實例】本文介紹RSA2加密與解密,RSA2是RSA的加強版本,在密鑰長度上採用2048, RSA2比RSA更安全,更可靠, 本人的另一篇文章RSA已經發表,有想了解的可以點開下面的RSA文章

❺ java字元串轉換為一個RSA公鑰問題,怎麼解決

//將byte數組變成RSAPublicKey
publicRSAPublicKeybytes2PK(byte[]buf){
buf=Base64.decode(buf);
bytesize=buf[0];
bytesize2=buf[1];
byte[]b1=newbyte[size];
System.array(buf,2,b1,0,b1.length);
byte[]b2=newbyte[size2];
System.array(buf,b1.length+2,b2,0,b2.length);
BigIntegerB1=newBigInteger(b1);
BigIntegerB2=newBigInteger(b2);
RSAPublicKeySpecspec=newRSAPublicKeySpec(B1,B2);//存儲的就是這兩個大整形數
KeyFactorykeyFactory;
PublicKeypk=null;
try{
keyFactory=KeyFactory.getInstance("RSA");
pk=keyFactory.generatePublic(spec);
}catch(Exceptione){
e.printStackTrace();
}
return(RSAPublicKey)pk;
}

❻ 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

❼ 怎麼用 python 模擬 js 里 JSEncrypt 模塊的加密方式

PC登錄新浪微博時,在客戶端用js預先對用戶名、密碼都進行了加密,而且在POST之前會GET一組參數,這也將作為POST_DATA的一部分。這樣,就不能用通常的那種簡單方法來模擬POST登錄(比如人人網)。
通過爬蟲獲取新浪微博數據,模擬登錄是必不可少的。
1、在提交POST請求之前,需要GET獲取四個參數(servertime,nonce,pubkey和rsakv),不是之前提到的只是獲取簡單的servertime,nonce,這里主要是由於js對用戶名、密碼加密方式改變了。
1.1 由於加密方式的改變,我們這里將使用到RSA模塊,有關RSA公鑰加密演算法的介紹可以參考網路中的有關內容。下載並安裝rsa模塊:
下載:https//pypi.python.org/pypi/rsa/3.1.1
rsa模塊文檔地址:http//stuvel.eu/files/python-rsa-doc/index.html
根據自己的Python版本選擇適合自己的rsa安裝包(.egg),在win下安裝需要通過命令行使用easy_install.exe(win上安裝setuptool從這里下載:setuptools-0.6c11.win32-py2.6.exe 安裝文件 )進行安裝,例如:easy_install rsa-3.1.1-py2.6.egg,最終命令行下測試import rsa,未報錯則安裝成功。
1.2 獲得以及查看新浪微博登錄js文件
查看新浪通行證url (http//login.sina.com.cn/signup/signin.php)的源代碼,其中可以找到該js的地址 http//login.sina.com.cn/js/sso/ssologin.js,不過打開後裡面的內容是加密過的,可以在網上找個在線解密站點解密,查看最終用戶名和密碼的加密方式。
1.3 登錄
登錄第一步,添加自己的用戶名(username),請求prelogin_url鏈接地址:
prelogin_url = 'http//login.sina.com.cn/sso/prelogin.php?entry=sso&callback=sinaSSOController.preloginCallBack&su=%s&rsakt=mod&client=ssologin.js(v1.4.4)' % username
使用get方法得到以下類似內容:
sinaSSOController.preloginCallBack({"retcode":0,"servertime":1362041092,"pcid":"gz-","nonce":"IRYP4N","pubkey":"","rsakv":"1330428213","exectime":1})
進而從中提取到我們想要的servertime,nonce,pubkey和rsakv。當然,pubkey和rsakv的值我們可以寫死在代碼中,它們是固定值。
2、之前username 經過BASE64計算:
復制代碼 代碼如下:
username_ = urllib.quote(username)
username = base64.encodestring(username)[:-1]
password經過三次SHA1加密,且其中加入了 servertime 和 nonce 的值來干擾。即:兩次SHA1加密後,結果加上servertime和nonce的值,再SHA1算一次。
在最新的rsa加密方法中,username還是以前一樣的處理;
password加密方式和原來有所不同:
2.1 先創建一個rsa公鑰,公鑰的兩個參數新浪微博都給了固定值,不過給的都是16進制的字元串,第一個是登錄第一步中的pubkey,第二個是js加密文件中的『10001'。
這兩個值需要先從16進制轉換成10進制,不過也可以寫死在代碼里。這里就把10001直接寫死為65537。代碼如下:
復制代碼 代碼如下:
rsaPublickey = int(pubkey, 16)
key = rsa.PublicKey(rsaPublickey, 65537) #創建公鑰
message = str(servertime) + '\t' + str(nonce) + '\n' + str(password) #拼接明文js加密文件中得到
passwd = rsa.encrypt(message, key) #加密
passwd = binascii.b2a_hex(passwd) #將加密信息轉換為16進制。
2.2 請求通行證url:login_url =『http//login.sina.com.cn/sso/login.php?client=ssologin.js(v1.4.4)'
需要發送的報頭信息
復制代碼 代碼如下:
postPara = {
'entry': 'weibo',
'gateway': '1',
'from': '',
'savestate': '7',
'userticket': '1',
'ssosimplelogin': '1',
'vsnf': '1',
'vsnval': '',
'su': encodedUserName,
'service': 'miniblog',
'servertime': serverTime,
'nonce': nonce,
'pwencode': 'rsa2',
'sp': encodedPassWord,
'encoding': 'UTF-8',
'prelt': '115',
'rsakv' : rsakv,
'url': 'http//weibo.com/ajaxlogin.php?framelogin=1&callback=parent.sinaSSOController.feedBackUrlCallBack',
'returntype': 'META'
}
請求的內容中添加了rsakv,將pwencode的值修改為rsa2,其他跟以前一致。
將參數組織好,POST請求。檢驗是否登錄成功,可以參考POST後得到的內容中的一句 location.replace("http://weibo.com/ajaxlogin.php?framelogin=1&callback=parent.sinaSSOController.feedBackUrlCallBack&retcode=101&reason=%B5%C7%C2%BC%C3%FB%BB%F2%C3%DC%C2%EB%B4%ED%CE%F3");
如果retcode=101則表示登錄失敗。登錄成功後結果與之類似,不過retcode的值是0。
3、登錄成功後,在body中的replace信息中的url就是我們下一步要使用的url。然後對上面的url使用GET方法來向伺服器發請求,保存這次請求的Cookie信息,就是我們需要的登錄Cookie了。

閱讀全文

與rsa2加密源碼相關的資料

熱點內容
安卓qq最新版本怎麼解綁手機號 瀏覽:678
經典三極3d版古裝劇 瀏覽:169
phpcurljsonget 瀏覽:910
郝萬山pdf 瀏覽:84
潛行者電影在線觀看 瀏覽:866
php判斷元素在數組中 瀏覽:746
androidphpmd5 瀏覽:692
vr能看什麼電影 瀏覽:164
成龍電影裡面有個龍復活了 瀏覽:107
成人影視免費 瀏覽:369
男的送快遞,女的在按摩的上班的叫什麼電影 瀏覽:753
海綿寶寶大電影免費中文版 瀏覽:276
愛國戰爭片免費觀看 瀏覽:888
三位數碼管單片機是如何工作的 瀏覽:728
免費看不下載老電影院 瀏覽:512
啄木鳥影業都有哪些作品 瀏覽:824
在電腦上怎麼把pdf保存成圖片 瀏覽:767
末段愛情廣播劇是哪個app可以聽 瀏覽:322
e片免費看 瀏覽:361
成龍教外國小孩功夫電影叫什麼 瀏覽:482