當前位置:首頁 » 密碼管理 » iosrsa私鑰加密

iosrsa私鑰加密

發布時間: 2022-10-03 04:01:55

❶ 怎麼在ios中應用「RSA的私鑰加密或公鑰加密演算法

1、用公鑰加密,用私鑰解密。 2、給別人發信息,就從伺服器上拉下來別人的公鑰,加密後發給他。 3、對方拿到信息後用自己的私鑰解密。 4、這樣,公鑰加密後除了私鑰持有人,別人都看不到信息

❷ ios開發rsa加密怎麼生成秘鑰

1、加密解密的第一步是生成公鑰、私鑰對,私鑰加密的內容能通過公鑰解密(反過來亦可以) 下載開源RSA密鑰生成工具openssl(通常Linux系統都自帶該程序),解壓縮至獨立的文件夾,進入其中的bin目錄,執行以下命令: 代碼如下: openssl genrsa -out rsa_private_key.pem 1024 openssl pkcs8 -topk8 -inform PEM -in rsa_private_key.pem -outform PEM -nocrypt -out private_key.pem openssl rsa -in rsa_private_key.pem -pubout -out rsa_public_key.pem 第一條命令生成原始 RSA私鑰文件 rsa_private_key.pem,第二條命令將原始 RSA私鑰轉換為 pkcs8格式,第三條生成RSA公鑰 rsa_public_key.pem 從上面看出通過私鑰能生成對應的公鑰,因此我們將私鑰private_key.pem用在伺服器端,公鑰發放給android跟ios等前端 2、php中用生成的公鑰、私鑰進行加密解密,直接上代碼 代碼如下: $fp=fopen("rsa/rsa_private_key.pem","r"); //你的私鑰文件路徑 $private_key=fread($fp,8192); fclose($fp); $fp1=fopen("rsa/rsa_public_key.pem","r"); //你的公鑰文件路徑 $public_key=fread($fp1,8192); fclose($fp1); //echo $private_key; $pi_key=openssl_pkey_get_private($private_key);//這個函數可用來判斷私鑰是否是可用的,可用返回資源id Resource id $pu_key=openssl_pkey_get_public($public_key );//這個函數可用來判斷公鑰是否是可用的 print_r($pi_key);echo "n"; echo "<br>"; print_r($pu_key);echo "n"; echo "<br>"; echo "<hr>"; $data='php ras加密演算法'; $encrypted = ""; $decrypted = ""; echo "加密的源數據:".$data."n"; echo "<br>"; echo "private key encrypt:n"; echo "<br>"; openssl_private_encrypt($data,$encrypted,$pi_key);//私鑰加密 $encrypted = base64_encode($encrypted);//加密後的內容通常含有特殊字元,需要編碼轉換下,在網路間通過url傳輸時要注意base64編碼是否是url安全的 echo '私鑰加密後:'.$encrypted."n"; echo "<br>";echo "<br>"; echo "public key decrypt:n"; echo "<br>"; openssl_public_decrypt(base64_decode($encrypted),$decrypted,$pu_key);//私鑰加密的內容通過公鑰可用解密出來 echo '公鑰解密後:'.$decrypted."n"; echo "<br>"; echo "<hr>"; echo "public key encrypt:n"; echo "<br>"; openssl_public_encrypt($data,$encrypted,$pu_key);//公鑰加密 $encrypted = base64_encode($encrypted); echo $encrypted,"n"; echo "<br>"; echo "private key decrypt:n"; echo "<br>"; openssl_private_decrypt(base64_decode($encrypted),$decrypted,$pi_key);//私鑰解密 echo $decrypted,"n"; echo "<br>"; PHP的RSA配置常見問題: ●PHP開發語言的代碼示例中openssl文件夾中的3個DLL文件用法 1、如果你的系統是windows系統,且system32文件目錄下沒有libeay32.dll、ssleay32.dll這兩個文件 那麼需要拷貝這兩個文件到system32文件目錄。 2、如果您的php安裝目錄下(phpext)中沒有php_openssl.dll 那麼請把php_openssl.dll放在這個文件夾中 喜歡加密解密的小夥伴一定要好好看看這篇文章,受益匪淺。。。

❸ 怎麼在ios進行rsa公鑰加密,java做rsa私鑰解密

1、用公鑰加密,用私鑰解密。
2、給別人發信息,就從伺服器上拉下來別人的公鑰,加密後發給他。
3、對方拿到信息後用自己的私鑰解密。
4、這樣,公鑰加密後除了私鑰持有人,別人都看不到信息。
5、若是用私鑰加密,那麼公鑰都能解密,還有何安全性可言?
6、私鑰加密的場合只有一個,那就是數字簽名,用來表明這個信息來源於你。

❹ IOS中怎麼做RSA加密演算法

RSA加密以及解密實現步驟:

1、使用openssl生成密匙對。

代碼如下:(代碼源於github開源社區)

#!/usr/bin/envbash
echo"GeneratingRSAkeypair..."
echo"1024RSAkey:private_key.pem"
opensslgenrsa-outprivate_key.pem1024

echo":rsaCertReq.csr"
opensslreq-new-keyprivate_key.pem-outrsaCertReq.csr

echo"createcertificationusingx509:rsaCert.crt"
opensslx509-req-days3650-inrsaCertReq.csr-signkeyprivate_key.pem-outrsaCert.crt

echo"createpublic_key.derForIOS"
opensslx509-outformder-inrsaCert.crt-outpublic_key.der

echo"createprivate_key.p12ForIOS.Pleaserememberyourpassword.ThepasswordwillbeusediniOS."
opensslpkcs12-export-outprivate_key.p12-inkeyprivate_key.pem-inrsaCert.crt

echo"creatersa_public_key.pemForJava"
opensslrsa-inprivate_key.pem-outrsa_public_key.pem-pubout
echo"createpkcs8_private_key.pemForJava"
opensslpkcs8-topk8-inprivate_key.pem-outpkcs8_private_key.pem-nocrypt

echo"finished."

2、載入證書後即可進行加密演算法。

代碼:

RSAEncryptor*rsa=[[RSAEncryptoralloc]init];

NSLog(@"encryptorusingrsa");
NSString*publicKeyPath=[[NSBundlemainBundle]pathForResource:@"public_key"ofType:@"der"];
NSLog(@"publickey:%@",publicKeyPath);
[rsaloadPublicKeyFromFile:publicKeyPath];

NSString*securityText=@"hello~";
NSString*encryptedString=[rsarsaEncryptString:securityText];
NSLog(@"encrypteddata:%@",encryptedString);

對應解密代碼:

NSLog(@"decryptorusingrsa");
[rsaloadPrivateKeyFromFile:[[NSBundlemainBundle]pathForResource:@"private_key"ofType:@"p12"]password:@"123456"];
NSString*decryptedString=[rsarsaDecryptString:encryptedString];
NSLog(@"decrypteddata:%@",decryptedString);

RSA基本原理:

RSA使用"秘匙對"對數據進行加密解密.在加密解密數據前,需要先生成公鑰(public key)和私鑰(private key)。

公鑰(public key): 用於加密數據. 用於公開, 一般存放在數據提供方, 例如iOS客戶端。

私鑰(private key): 用於解密數據. 必須保密, 私鑰泄露會造成安全問題。

❺ iOS逆向(1)-密碼學(RSA)

要講逆向,那麼肯定少不了密碼學,因為所有的逆向(攻防)都是對已加密的數據進行解密。所以我們必須初步了解加密的方式有哪些,畢竟知己知彼,才能百戰百勝。

接下來,我將從以下四方面來講述密碼學相關的內容:
1、什麼是密碼學
2、RSA數學原理
3、RSA終端命令
4、總結

密碼學的歷史大致可以追溯到兩千年前,相傳古羅馬名將凱撒大帝為了防止敵方截獲情報,用密碼傳送情報。凱撒的做法很簡單,就是對二十幾個羅馬字母建立一張對應表。這樣,如果不知道密碼本,即使截獲一段信息也看不懂。

從凱撒大帝時代到上世紀70年代這段很長的時間里,密碼學的發展非常的緩慢,因為設計者基本上靠經驗。沒有運用數學原理。

在1976年以前,所有的加密方法都是同一種模式:加密、解密使用同一種演算法。在交互數據的時候,彼此通信的雙方就必須將規則告訴對方,否則沒法解密。那麼加密和解密的規則(簡稱密鑰),它保護就顯得尤其重
要。傳遞密鑰就成為了最大的隱患。這種加密方式被成為對稱加密演算法(symmetric encryption algorithm)。

1976年,兩位美國計算機學家 迪菲(W.Diffie)、赫爾曼( M.Hellman ) 提出了一種嶄新構思,可以在不直接傳遞密鑰的情況下,完成密鑰交換。這被稱為「迪菲赫爾曼密鑰交換」演算法。開創了密碼學研究的新方向。

1977年三位麻省理工學院的數學家 羅納德·李維斯特(Ron Rivest)、阿迪·薩莫爾(Adi Shamir)和倫納德·阿德曼(Leonard Adleman)一起設計了一種演算法,可以實現非對稱加密。這個演算法用他們三個人的名字命名,叫做RSA演算法。

也就是說「迪菲赫爾曼密鑰交換」在密碼學歷史的車輪中成為了一個轉折點。

咱們這里先把所有需要用到的公式定理列出來:
1、取模運算
2、歐拉函數φ
3、歐拉定理,費馬小定理
4、模反元素
5、迪菲赫爾曼密鑰交換

取模運算(「Molo Operation」)和取余運算(「Complementation 」)兩個概念有重疊的部分但又不完全一致。主要的區別在於對負整數進行除法運算時操作不同。
在這列出各種負數情況的例子供大家理解:
7 mod 4 = 3(商 = 1 或 2,1<2,取商=1)
-7 mod 4 = 1(商 = -1 或 -2,-2<-1,取商=-2)
7 mod -4 = -1(商 = -1或-2,-2<-1,取商=-2)
-7 mod -4 = -3(商 = 1或2,1<2,取商=1)

函數值符號規律(余數的符號) mod(負,正)=正 mod(正,負)=負
結論:兩個整數求余時,其值的符號為除數的符號。

可以簡單理解為:
如果n可以分解為 兩個互質(不一定是兩個質數) 的數之積A和B,那麼:
φ(n) = φ(A) * φ(B)
如果 A和B 又同時為質數,那麼:
φ(n) = (A-1) * (B-1)

首先這里說一下,定製之所以是定理是被人證明過的,如何證明的不管,當然你也可以增加去證明下,反正我不管(……&%¥%……&%&……&%),哈哈

如果m、n為正整數,且m、n互質,那麼:

如果n為質數,那麼:

公式轉換:

如果兩個正整數e和x互質,那麼一定可以找到整數d,使得 e*d-1 被x整除。那麼d就是e對於x的「模反元素」。

如上圖:
客戶端持有一個隨機數13 ,服務端持有隨機數15,再選一對特殊的數,3是17的原根(啥是 原根 ?)。
兩端交換的都是密文,就算中間被劫持,也不知道最後需要的傳輸的內容是10
那麼這個10就是最後真正的秘鑰。

證明過程

那麼:

又由於上面模反元素 最後得出

所以得出最終結論:

這個公式也就是我們最後的RSA加密公式!!!
其中:

補充:
1、n會非常大,長度一般為1024個二進制位。(目前人類已經分解的最大整數,232個十進制位,768個二進制位)
2、由於需要求出φ(n),所以根據歐函數特點,最簡單的方式n 由兩個質數相乘得到: 質數:p1、p2
Φ(n) = (p1 -1) * (p2 - 1)
3、最終由φ(n)得到e 和 d 。
總共生成6個數字:p1、p2、n、φ(n)、e、d

關於RSA的安全:
除了公鑰用到了n和e 其餘的4個數字是不公開的。
目前破解RSA得到d的方式如下:
1、要想求出私鑰 d 。由於e d = φ(n) k + 1。要知道e和φ(n);
2、e是知道的,但是要得到 φ(n),必須知道p1 和 p2。
3、由於 n=p1*p2。只有將n因數分解才能算出。

由於Mac系統內置OpenSSL(開源加密庫),所以我們可以直接在終端上使用命令來玩RSA. OpenSSL中RSA演算法常用指令主要有三個:

1、由於RSA加密解密用的不是一套數據,所以其保證了安全性。
2、由於私鑰過大,所以效率較低
3、如果有一天量子計算機被普及(計算速度極快),那麼1024位已經不足以讓RSA安全。

熱點內容
oracle數據導入sql 發布:2025-05-15 08:55:00 瀏覽:48
最適合做的腳本 發布:2025-05-15 08:54:27 瀏覽:379
太原php培訓班 發布:2025-05-15 08:41:38 瀏覽:937
豌豆伺服器地址 發布:2025-05-15 08:34:56 瀏覽:712
linux下php編譯安裝 發布:2025-05-15 08:30:37 瀏覽:592
c語言八進制十六進制 發布:2025-05-15 08:22:17 瀏覽:282
華為安卓如何更新鴻蒙 發布:2025-05-15 08:18:52 瀏覽:373
工商密碼器是什麼 發布:2025-05-15 08:18:50 瀏覽:752
c語言自考 發布:2025-05-15 07:52:42 瀏覽:501
壓縮的玉 發布:2025-05-15 07:51:22 瀏覽:790