虽然写了个程序,但是没试出来结果// rsa_demo.cpp : Defines the entry point for the console application. //#include "stdafx.h"/******************************************************************************/ // 名称:rsa_encrypt // 功能:RSA加密运算 // 参数:n: 公钥n; e: 公钥e; mw: 加密明文; iLength: 明文长度; cw: 密文输出 // 返回:无/******************************************************************************/ void rsa_encrypt( int n, int e, char *mw, int mLength, int *&cw ) { int i=0, j=0; __int64 temInt = 0;
//E = 0x01, 0x00, 0x01,
//N = 0xCF, 0x8A, 0x6C, 0xD1,
//D = 0x36, 0x2B, 0x40, 0xE1,
//P = 0xF5, 0x35,
//Q = 0xD8, 0xAD,
//dP = 0xD3, 0x3D,
//dQ = 0x40, 0xE1,
//U = 0xCB, 0xBF,
//input = 0x12, 0x34, 0x00, 0x00,
//output = 0xB9, 0x5D, 0x1D, 0x3C, 这是rsa 32位的密钥,一会儿俺试试。
//#include "stdafx.h"/******************************************************************************/
// 名称:rsa_encrypt
// 功能:RSA加密运算
// 参数:n: 公钥n; e: 公钥e; mw: 加密明文; iLength: 明文长度; cw: 密文输出
// 返回:无/******************************************************************************/
void rsa_encrypt( int n, int e, char *mw, int mLength, int *&cw )
{
int i=0, j=0;
__int64 temInt = 0;
for( i=0; i<mLength; i++ )
{
temInt = mw[i];
if( e!=0 )
{
for( j=1; j<e; j++ )
{
temInt = ( temInt * (int)mw[i] ) % n;
}
}
else
{
temInt = 1;
}
cw[i] = (int)temInt;
}
} int main(int argc, char* argv[])
{
//E = 0x01, 0x00, 0x01,
//N = 0xCF, 0x8A, 0x6C, 0xD1,
//D = 0x36, 0x2B, 0x40, 0xE1,
//P = 0xF5, 0x35,
//Q = 0xD8, 0xAD,
//dP = 0xD3, 0x3D,
//dQ = 0x40, 0xE1,
//U = 0xCB, 0xBF,
//input = 0x12, 0x34, 0x00, 0x00,
//output = 0xB9, 0x5D, 0x1D, 0x3C, int e = 0x00010001;
//int n = 0xcf8a6cd1;
//int e = 0x01000100;
int n = 0xd16c8acf;
char mw[] = { 0x12, 0x34, 0x00, 0x00 };
//char mw[] = { 0x00, 0x00, 0x34, 0x12 };
int t[ 0x10 ];
int *cw = t;
rsa_encrypt( n, e, mw, 4, cw ); printf( "%.16X \r\n", t[ 0 ] ); //printf("Hello World!\n");
return 0;
}