分类 资料 下的文章

RSA破解算法研究的一些心得

最近研究RSA破解算法,找了大量资料,得到一些心得,这里记录下。
1、RSA算法有公钥和私钥,一般资料上都是数字来举例,实际看见的有字母,这里要注意下资料上的是10进制,实际是16进制。
2、公钥和私钥是一对,一个私钥对应一个公钥,用公钥可以计算出私钥,用私钥可以计算出公钥,不过用私钥计算公钥的计算量比用公钥计算私钥的计算量小。
3、公钥本身也是一对,私钥本身也是一对的,公钥(n,e),私钥(n,d),其中n=pq,p和q是互不相等的质数,令t=(p-1)(q-1),有p和q了就可以计算出n,e是自己选的,一般是用的65537(16进制10001),e需要和t互质,且1<e<t,然后公式ed%t=1,这里e和t是已知的,解出一个d就可以了。
4、知道怎么用p、q生成公钥、私钥了,那么现在就知道了破解RSA算法的方法了,把公钥中的n拿来分解质因数,就可以得到p、q,然后就可以计算出私钥了。

补充:公钥和私钥区分并不明显,公钥加密用私钥解密,私钥加密的用公钥解密。

下面是我用python写的代码,测试了些简单的,可以很快计算出,代码用的python 3





- 阅读剩余部分 -

android 调用shell命令

网上找了好多都不能用,最后群里一朋友给了段代码可以用,记录下

public String exec(String xx) {
    Runtime ex = Runtime.getRuntime();
    String cmdBecomeSu = "/system/bin/sh -";
    String script = xx;
    try
    {
        java.lang.Process runsum = ex.exec(cmdBecomeSu);
        int exitVal = 0;
        final OutputStreamWriter out = new OutputStreamWriter(runsum.getOutputStream());
        BufferedReader in = new BufferedReader(new InputStreamReader(runsum.getInputStream()));
        out.write(script);
        out.write("\n");
        out.flush();
        out.write("exit\n");
        out.flush();
        out.close();
        String s = "";
        String line = null;
        while ((line = in.readLine()) != null) {
            s += line + "\n";
        }
        in.close();
        exitVal = runsum.waitFor();
        if (exitVal == 0)
        {
            Log.e("Debug", "Successfully to shell");
            return s;
        }
    }
    catch ( Exception e)
    {
        Log.e("Debug", "Fails to shell");
    }
    return cmdBecomeSu;
}