小编seg*_*ult的帖子

在Mac OS 10.8上使用dev/urandom生成非常慢的随机数

我正在编写一个使用Paillier Cryptosystem来加密矩阵的程序.要加密50 x 50矩阵,大约需要12秒!考虑到我打算加密大小为5000 x 5000及以上的矩阵,这是痛苦的.在Xcode上分析程序我发现这个paillier_get_rand_devurandom()是罪魁祸首.

这是调用跟踪快照:

在此输入图像描述

这是此特定Paillier C库函数的源代码

    void paillier_get_rand_devurandom( void* buf, int len )
    {
          paillier_get_rand_file(buf, len, "/dev/urandom");
    }  


    void paillier_get_rand_file( void* buf, int len, char* file )
   {
         FILE* fp;
         void* p;

         fp = fopen(file, "r");

         p = buf;
         while( len )
         {
             size_t s;
             s = fread(p, 1, len, fp);
             p += s;
             len -= s;
         }

        fclose(fp);
    }
Run Code Online (Sandbox Code Playgroud)

如果是的话,

    <http://www.en.wikipedia.org/wiki/Paillier_cryptosystem>
    Paillier Cryptosytem C library : <http://acsc.cs.utexas.edu/libpaillier/> 
Run Code Online (Sandbox Code Playgroud)

我已经读过使用dev/random的随机数生成很慢而使用dev/urandom则更快.在我的情况下,两者都同样缓慢.这个随机数生成能否更快?

编辑:这是一个例子

    #include <stdio.h>
    #include <stdlib.h>
    #include <gmp.h>
    #include<paillier.h> …
Run Code Online (Sandbox Code Playgroud)

c random cryptography gmp xcode4

6
推荐指数
1
解决办法
1010
查看次数

标签 统计

c ×1

cryptography ×1

gmp ×1

random ×1

xcode4 ×1