草庐IT

Cryptography

全部标签

c++ - φ(n) = (p-1)(q-1) p 和 q 是两个大数找到 e 使得 gcd(e,φ(n)) = 1

很难说出这里要问什么。这个问题模棱两可、含糊不清、不完整、过于宽泛或夸夸其谈,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开,visitthehelpcenter.关闭11年前。φ(n)=(p-1)(q-1)p和q是两个大数找到满足gcd(e,φ(n))=1的e将p和q视为一个非常大的素数(Bigint)。我想为此找到一个有效的解决方案。[编辑]我可以用蛮力法解决这个问题。但由于数字太大,我需要更有效的解决方案。还有1

c++ - 在 C++ 中隐藏加密 key 的跨平台方式?

我的应用程序需要使用几个硬编码的对称加密key(虽然我知道存储公钥是唯一完美的解决方案,但这是没有商量余地的)。我们希望key被混淆存储,这样它们就不会通过分析可执行文件被识别出来,并尽可能短地“存在”在内存中——以增加执行任务的难度内存转储以明文形式检索它们。我对使用C++功能很感兴趣(想到使用某种scoped_key)。该解决方案必须可移植-Windows、Linux、MacOS,因此它无法利用操作系统加密API。您将如何设计这样一个系统?非常感谢。 最佳答案 在这里,您要做的只是默默无闻的安全性。如果你让我们中的一个人想出一个

c++ - 随机排列中第 n 项的高效计算

想象一下,我能够使用诸如Knuth洗牌之类的方法和使用key播种的种子随机数生成器来洗牌0到2^32之间的所有数字。从概念上讲,我需要两个数组(使用Z5而不是Z232为简洁起见):[2,0,1,4,3]//perm[1,2,0,4,3]//inv===p^-1如果我有这些数组,我可以高效地查找排列中的第n个元素,并找出purmutation值v中的元素;v=perm[n];n==inv[v];//true我不想存储两个16GB的uint数组来表示这个打乱后的集合,因为我对整个打乱后的序列在任何时候都不感兴趣。我只对第n个元素的值感兴趣。理想情况下,我想编写两个像这样工作的纯函数:uin

c++ - 我可以调整从中移出的 vector 的大小吗?

我有一些代码,我想在其中绝对确保移出的std::vector不会留下secret数据(考虑加密key管理)。在我类(class)的move构造函数中,我做了类似的事情:X(X&&rhs):secret_vector{std::move(rhs.secret_vector)}{rhs.secret_vector.resize(N);safe_zero(rhs.secret_vector);//zerooutallelementsrhs.secret_vector.resize(0);}如您所见,我在move后重新使用了secretvector。我看着Reusingamovedcontai

c++ - 什么库或软件盲目签名和验证?

关闭。这个问题不符合StackOverflowguidelines.它目前不接受答案。我们不允许提问寻求书籍、工具、软件库等的推荐。您可以编辑问题,以便用事实和引用来回答。关闭10个月前。Improvethisquestion我最近听说了盲签名。我看到了关于它们如何工作的维基百科文章,但不想实现它。我可以使用哪些库(最好与linux和windows兼容)来实现盲签名并验证文件是否已签名?我尝试查看openssl手册页,但我认为它不支持盲签名http://www.openssl.org/docs/apps/dgst.html我可以在C++或.NET中实现我的应用程序,并且在生成过程和解析

c++ - SSL/TLS 协议(protocol)版本回退机制

我正在使用MicrosoftCryptoAPI来处理SSL连接。与支持TLS1.0或更高版本的服务器通信时,一切正常,但当我尝试处理仅支持SSL3.0的服务器时InitializeSecurityContext()失败,错误代码为0x80090331(SEC_E_ALGORITHM_MISMATCH).我尝试使用作为pAuthData参数传递给AcquireCredentialsHandle()的SCHANNEL_CRED结构。特别是它有字段grbitEnabledProtocols应该控制支持的协议(protocol)集。当我设置grbitEnabledProtocols=SP_PR

c++ - 屏蔽对于阻止旁路攻击是否有效?

我正在使用一些bigint公钥加密代码。使用按位掩码来确保计算时序和访问的内存地址与数据值无关是否安全?这项技术是否容易受到基于指令时序、功率、RF辐射或其他我不知道的因素的边信道攻击?(作为引用,我知道RSA盲法、EC蒙哥马利阶梯、缓存刷新等技术。)简单代码示例(C/C++):uinta=(...),b=(...);if(a现在翻译为使用恒定时间掩码:uinta=(...),b=(...);uintmask=-(uint)(a请注意a为0或1,掩码为0x00000000或0xFFFFFFFF。类似地,对于高级操作(C++):Integerx=(...);if(x.isFoo())x.

c++ - 如何使用 boost::random_device 生成密码安全的 64 位整数?

我想做这样的事情:boost::random_devicerd;boost::random::mt19937_64gen(rd());boost::random::uniform_int_distributiondis;uint64_tvalue=dis(gen);但我读到梅森扭曲器在密码学上并不安全。但是,我还读到一个random_device可能是,如果它从/dev/urandom中提取数据,这可能在linux平台(我的主要平台)上。因此,如果random_device是非确定性随机的并且它用于播种梅森扭曲器(如上所示),这是否也使梅森扭曲器在密码学上是安全的(即使它本身不是)?我

C++异或加密

在阅读了几本关于密码学和运行时PE加密程序的白皮书后,我决定自己编写。它非常简单,仅用于教育目的。这是GitHub存储库:https://github.com/Jyang772/XOR_Crypter我有两个问题。首先,为什么我必须不断更改我的文件权限才能开始每个输出的.exe(由Builder.exe而不是编译器创建的文件)?它创建一个Shared文件。我必须右键单击它并选择与Nobody共享。这与文件访问和安全权限有关吗?我正在使用CreateFile()和Readfile来读取和写入输入和输出文件。http://msdn.microsoft.com/en-us/library/w

C++ OpenSSL 导出私钥

到目前为止,我成功地使用了SSL,但遇到了一个令人困惑的障碍。我生成一个RSAkey对,之前使用PEM_write_bio_RSAPrivateKey(...)导出它们。然而,手册页声称该格式已过时(实际上它看起来与通常的PEM格式不同)。相反,它推荐PEM_write_bio_PKCS8PrivateKey(...)。但是PEM_write_bio_PKCS8PrivateKey接受EVP_PKEY对象。如何将我的RSA*key对转换为EVP_PKEY*结构以便在该函数中使用?EVP_PKEY*evpkey=EVP_PKEY_new();if(!EVP_PKEY_assign_RSA