当前位置: 代码迷 >> VFP >> RSA 加密算法 提到的 1024 2048bit 是什么意思 ?该如何处理
  详细解决方案

RSA 加密算法 提到的 1024 2048bit 是什么意思 ?该如何处理

热度:9612   发布时间:2013-02-26 00:00:00.0
RSA 加密算法 提到的 1024 2048bit 是什么意思 ?
看RSA介绍时 说2048bit 才安全  

不知道 怎么算出的 2048  我现在有demo(delphi)


------解决方案--------------------------------------------------------
delphi 不懂(WWWWA好像精通)

手头有木瓜的MyFll.Fll,其中有一个RSA计算函数为RSACalc


函数名:RSACalc(cN,cED,cM)
缩写:rsac
RSA算法计算函数。算法原理简术如下:
*公开密钥 n:两个素数p和q的乘积
* e: 与(p-1)(q-1)互素
*
*私人密钥 d: e(mod(p-1)(q-1))
*消息:m
*加密 c=m^e mod n
*解密 m=c^d mod n

RSA是非对称算法,使用模数 N 和 公钥 E 加密,使用模数 N 和 私钥 D 解密,加密强度依赖于对模数 N 进行质数分解的难度。一般应用可以用512位,现在银行系统使用的一般为1024位或2048位
可以使用RSAGen()来生成一组符合RSA算法的 P Q N D E ,要加密的消息,必需小于N,可以用RSACmp提前检查是否符合条件 ,P和Q用完要丢弃,保护好私钥 D ,公开的只有N和E,E一般取值0x3或0x10001。

此函数的数值,都是16进制状态。

一般加密比较慢,解密比较快,公钥和私钥加解密互逆。即公钥加密-私钥解密,或私钥加密-公钥解密。

返回值:
字符型加密/解密后的消息。 
参数:
cN:字符型,模数 
cE:字符型,公钥/私钥,公钥一般可用0x10001,私钥时为D 
cM:字符型,要处理的消息,必需小于N 
示例代码
*密钥信息如下:
cP="8C445E5CB8228EF80DDEC084E58E4F2A3100C97E3A34603E1A7893C6EEFED167"
cQ="D3A2D540DDF485D86964F06E6192540C4626A74698185B644EEC6F9C30A60457"
cN="73F591E28FA8BE0DC9C9FA985C0DEFF0880F471496A344F3455D8272558520B68A53FC5604B9444C12E0723AA3F34F16CFE5525EA1EE22368E1F589A4CA8C601"
cE="10001"
cD="2B6EC874A6C05A6749B4986326DFA5865F3FF1ACB97B6FE0FA933ABFDE5E5DD0DD921F604D37FC36FD232A95B323C972DF6A47ACD7C3296BC591F147185A484D"

Set Library To myfll

*公钥加密
*注:非十六进制串,可以用VFP以上版本中的Strconv('串',15)编码,16解码
cEnMsg= RSACalc(cN,cE,"123")
*加密后的结果为:
*18C326DC57FB2B8FBEE525FF9958014B78DB212EF8F33E5D4DBD46CF5A77E4C900085C8E38F3409A5891B37BCDB13417A178F0FB268E7DE02981C975986DD1E6
?cEnMsg

*私钥解密
?RSACalc(cN,cD,cEnMsg)
*还原后的结果为:123



------解决方案--------------------------------------------------------
30个字符长
 = 32 char * 8 bit = 256位了 = 2^256 = 10^77

已经很难单PC机破解了。虽说对非常重要信息来说还不安全(用多台小型机并行破解)。
  相关解决方案