zoukankan      html  css  js  c++  java
  • (转) RSATool 2 使用简介

    http://bbs.pediy.com/showthread.php?t=5464&highlight=%E8%AF%91%E8%80%85+Cnbragon+TT

    [[译者]Cnbragon[TT]
    [说两句]也不知道现在还有没有兄弟在用RSA Tool翻译了这
    篇帮助文档很简单。也不知道能不能给兄弟们带来帮助 *_^
    ----------------------
    [译文]
    RSA-Tool 2 ?2000-2002 tE! [TMG]版权所有

    介绍

        请仔细地阅读本文档。这个应用程序是为了想在他们的程序中使用RSA公钥算法的人准备的。它提供
    创造出强壮的密钥对和使用了包括MPQS在内的各种不同的因数分解方法而生成的整数因子。
        它可以分解256位大小的整数,但是要记住这会占用大量的内存和时间!因此不推荐在速度很慢和只


    很少MB的物理内存的机器上分解大数。更别想分解512位的了...

    PS: 看来采用 RSA 的注册方式,也是不安全的,除了私钥外泄的可能外,也还是有工具可以算的,只是时间问题。
       

      RSA-Tool 2 特点:

    - 安全生成密钥对
    - 密钥测试对话框
    - 支持复合进制
    - 自动进行选择的数制转换
    - 支持到4096字节

    1.关于RSA

        RSA是由Ronald Rivest,Adi Shamir和Leonard Adleman在1977年开发的公开密钥算法。直到2000年9
    月20日这个算法的美国专利权才到期!这就意味着这个算法是公开的了,可以被任何人免费的使用,
    甚至用于商业软件。

    2. 参数

       P= 第一个大素数
       Q= 第二个大素数 (P和Q的长度不能相差太大!)
       E= 公钥 (一个随机数,必须满足:GCD(E,(P-1)*(Q-1))==1)(译者注:即E和(p-1)(Q-1)互素)
       N= 公用模数,由P和Q生成:N=P*Q
       D= 私钥:D=E^(-1) mod ((P-1)*(Q-1))

       参数N和E是公开的但是D是私有的并且绝不能公开!P和Q在生成密钥后便不再需要了,但是必须销毁。

      为了从公钥(N,E)得到D,需要试图分解N为它的两个素数因子。对于一个很大的模数N(512位或更大)
    要想分解出它的P和Q是件非常困难的事。

      RSA 加密模式的所有安全性都依赖于大数分解(但是还没有数学上的证明)。
       请参阅:http://www.rsasecurity.com/rsalabs/c...ng/rsa155.html获得更多的信息.

    3. 加密

       加密一个信息块(M)(必须小于N),计算:
     
       密文=C=M^E mod N.

       注意:如果整个信息(M)大于N,它会被分解为几个大小小于N的信息块。

    4. 解密

       为了解密一个给定的密文(C)从而得到它的明文结果,计算: M=C^D mod N

       上面几个等式中的'^'是'乘方'的意思,不是'XOR'!

       注意RSA加密模式用其它的方法也可以:
     
       C=M^D mod N 和 M=C^E mod N. 它取决于你怎样补充它.只需要确定你从没有公开私钥D,P并且或者Q!

    5. 怎样使用...?

       ...生成一组RSA密钥对
       1)按下'Start'按钮,通过移动你的鼠标指针来收集一些随机数据.
         这必须一次完成,因为收集的数据会被保存在你的RSA-Tool文件夹里面的一个文件中。
       2)选择要创建的密钥的长度(等于N的长度)。最大为4096位.
       3)选择你的公钥(E)并把它输入到相应的编辑框作为十进制数。
         常用的E有(考虑到计算速度的原因):3,17,257和65537(十进制).
       4)按下'Generate',等到密钥生成完成。
         注意,生成很大的数需要一些时间,取决于你的CPU的计算能力。
         特别说明:你可以常按'Generate'.做为密钥生成过程的一个组成部分的内置随机数生成系统会在运

    行的
       时候重新进行初始化。这是故意这么做的,这样可使那些滥用这个工具做其它事情变得更困难...
       注意两次或两次以上生成相同的密钥对是不可能的。

       ...分解一个数?

       1)选择正确的进制
       2)在Modules(N)编辑框中输入或复制这个数。这会激活'Factor'按钮。
       3)然后按Factor按钮.注意分解大于240位的数会花很大的内存和时间!
         甚至很小的数也会需要几个小时。如果你不相信的话你可以试试用这个工具分解一个240位的N...
         如果用Multiple Polynomial Quadratic Sieve(MPQS)算法来分解整数,需要大量的内存.
       原因是这个算法的设计,而不是编码风格。
     
       例如:分解一个给定大小的N的内存使用情况(使用MPQS算法)...
             256位:~89MB, 280 位:~140MB,296位:~185MB等等.

       ...由素数因子P和Q计算私钥D

       1)选择参数P和Q的正确进制
          2)在相应的文本区域中输入或粘贴P和Q
       3)按下'Calc.D'

       ...得到整数的精确位长度
      
          1)为你要进行检查的数选择正确的进制
          2)在Modules(N)文本框中输入或粘贴整数
          3)按小的'Bits'按钮.这会显示出这个数使用的精确的位数。

    6. 说明

    - 用于密钥生成的素数是强壮的和精心计算的。如果你不相信这个工具,就不要使用它或者更好的逆向
     出密钥生成引擎并且告诉我你担心的问题;-)
    - 这个程序使用Shamus 软件公司的Miracl 4.45.C/CPP形式的源代码和手册可以从
     http://indigo.ie/~mscott/获得.在商业软件中使用Miracl库不是免费的.更糟的是授权费相当高.
      当然你可以换着使用其它的大数运算库-比如Freelib.
    - 使用了Base60转换表(Miracl支持)
      0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwx
    - 使用了Base64转换表
      ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/
      特别说明:Miracl不支持Base64数据格式.我使用自己的方法。从每个数的十六进制表示方法的MSB到LSB

    进行
     转换的。这可能和你用的库不匹配。Base64转换的C语言源代码将会和这个工具一起发放。

    7.  致谢

       这个工具是tE!用C语言编码,MSVC5编译。

      感谢Ousir -  Quantico -  Ivanopulo -  GriYo - Daemon -  MackT - Recca - Analyst
     Dimedrol - Snacker - SAC - VAG - +SplAj - Snaker - Seifer - Sab - NoodleSpa
     f0dder - The Owl - Lorian -  Defiler -  Ultraschall -  Seir -  Risc - MackT
     viruz666 - neoman - TMG所有的朋友和你


    tE!

  • 相关阅读:
    前端常见算法面试题之
    前端常见算法面试题之
    解决Windows7 Update无法检查更新
    linux停止tomcat为什么要kill其掉进程 而不是直接shutdown.sh
    ASP.NET Core 1.0 使用 MySQL for EF Core 1.0 (.NET Core 1.0)
    ASP.NET Core 1.0 部署 HTTPS (.NET Core 1.0)
    11款免费好用的源代码管理桌面应用【转】
    陈灯WGF双缓冲绘图框架
    关于面试别人那点事儿
    数据类型
  • 原文地址:https://www.cnblogs.com/spymaster/p/963187.html
Copyright © 2011-2022 走看看