RSA加密算法的C語言實現

ngmm 10年前發布 | 5K 次閱讀 C/C++

    //
// main.cpp
// RSA
//
// Created by liujan on 10/21/14.
// Copyright (c) 2014 liujan. All rights reserved.
//

#include <iostream>  
#include "cmath"  
using namespace std;  

long long p = 1949, q = 3413;  
long long N = p * q;  
long long e = 13007, d = 511;  

//對a的b次冪取模 m(大數取模)  
long long Mod(long long a, long long  b, long long m){  
    long long r = 1;  
    for (long long j = 0; j < b; j++){  
        r = (r * a) % m;  

    }  
    return r;  
}  

//對輸入信息進行rsa編碼  
long long * rsaEncode(string message){  
    size_t length = message.length();  
    long long *ascii = new long long[length]; //存儲信息的每個字符  
    long long *code = new long long[length];  //存儲每個字符的rsa編碼  
    for (size_t i = 0; i < length; i++){  
        ascii[i] = message[i];  
    }  

    for (size_t i = 0; i < length; i++){  
        code[i] = Mod(ascii[i], e, N ); //C=M^e (modN)  
    }  

    return code;  
}  

//根據rsa編碼得到原來的信息  
string rsaDecode(long long code[], size_t n){  
    long long  *ascii = new long long[n];  
    string message = "";  
    for (size_t i = 0; i < n; i++){  
        ascii[i] = Mod(code[i], d, N); //M=C^d (modN)  
        message += ((char)(ascii[i]));  
    }  
    return message;  
}  

int main(int argc, const char * argv[]) {  
    string message = "Hello World!";  
    size_t length = message.length();  
    long long *a = rsaEncode(message);  


    string newmessage = rsaDecode(a, length);  
    cout << newmessage << endl;  

    return 0;  
}  </pre> 


 本文由用戶 ngmm 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!