草庐IT

RSA_public_decrypt

全部标签

c++ - 如何使用 OpenSSL 库生成 RSA-SHA256 数字签名?

我需要使用OpenSSL库从C++代码生成数字签名。我知道我需要那个DSA\DSA_do_sign,但不明白如何使用它。有没有人有这方面的例子,或者比OpenSSL提供的文档更好的引用?提前致谢! 最佳答案 您似乎混淆了RSA和DSA。但是,如果您想使用RSA-sha256进行签名,请使用EVPinterfaceforsigning.您可以使用EVP_SignInit_ex()方法和EVP_sha256()为type参数进行初始化。 关于c++-如何使用OpenSSL库生成RSA-SHA

QT使用OpenSSL的接口实现RSA2的签名和验签

QT使用OpenSSL的接口实现RSA2的签名和验签加密和签名在RSA加密算法中是两个不同的概念,虽然它们都涉及RSA密钥对的使用,但目的和应用场景有所不同。加密(encrypt/decrypt):加密:使用接收方的公钥对数据进行加密,只有拥有相应私钥的接收方才能解密数据。解密:使用接收方的私钥对加密数据进行解密,从而获得原始数据。加密用于保护数据的机密性,确保只有授权的人能够解密和读取数据。签名(sign/verify):签名:使用发送方的私钥对数据进行签名,产生一个数字签名。验证签名:使用发送方的公钥对数字签名进行验证,以确保数据的完整性和认证发送方身份。签名用于验证数据的完整性和真实性,

密码学-2-RSA签名验签方案

密码学-1-数字签名体制密码学-2-RSA签名验签方案目录1签名验签2RSA签名算法2.1 RSA生成签名2.2RSA验证签名2.3RSA参数的选定2.3.1公私钥2.3.2 E,N,D2.4RSA签名应用场景2.4.1签名2.4.2验签1签名验签        重温上节所述的签名流程,其中散列值==>>签名(签名==>>散列值)的过程中,使用私钥签名(公钥验签),这个地方涉及到了非对称加密算法,这也是非对称算法的用途之一,即数字签名。        常见用作数字签名的非对称算法:SM2(国密)、 RSA、DSA、ECDSA(国际算法)。本文对常见的几种签名算法进行分析,内容深度只会涉及到签名

c++ - Crypto API RSA 公钥可以解密数据,不是预期的不对称

我遇到的问题是,我能够使用用于加密数据的相同RSA2048位公钥来解密数据。在我看来,如果公钥可以解密数据,这首先会破坏加密数据的全部目的。此时我唯一可以考虑的是,当我认为我正在生成非对称对时,我正在生成对称key交换对。最终用户这样做的目的是,当我无法从域中的工作站使用他们缓存的凭据时,稍后使用它来传输用户凭据以在办公室外使用应用程序时进行身份验证。理论上,我可以仅私钥来解密这些凭据。我制作了一个简单的测试类和代码来重现我的问题。我正在采取的步骤如下:获取MicrosoftEnhancedCryptographicProviderv1.0的上下文生成公钥/私钥对。将公钥和私钥BLOB

C++ 未解析的外部符号(public static int)

当我尝试编译它时,我得到了这个链接器错误:LNK2001unresolvedexternalsymbol"public:staticintHooksXD::night"(?night@HooksXD@@2HA)Theheaderisthis:classHooksXD{public:staticvoidXD3();staticintnight;staticintnight2;};变量是公共(public)的而不是私有(private)的,因为我需要从不在同一个类中的其他voids访问它们。cpp文件:HooksXDlmao;voidHooksXD::XD3(){//thisvoidwil

c++ - RSA加密和解密期间的RandomNumberGenerator要求?

我正在尝试使用公钥加密消息并使用私钥解密密码,在shell中使用crypto++就像这样:opensslrsautl-encrypt-inkeyid_rsa.pub.pem-pubin-inmessage-outmessage.enc和opensslrsautl-decrypt-inkeyid_rsa.pem-inmessage.enc-outmessage.dec加密/解密在单独的应用程序中完成。我从https://www.cryptopp.com/wiki/RSA_Cryptography的例子开始.我的代码:std::stringpublicEncrypt(std::string

c++ - 将公共(public) block 提取到 C++ 中的函数中

在处理C++代码时,我经常遇到一些问题。假设我有一个方法执行X、Y,然后执行Z。现在我想介绍另一个应该执行X、Y'、Z的方法。如果那是普通的旧C代码,那么我会使用通用代码创建函数X()和Z(),将它们声明为static以便编译器现在可以在需要时内联它们,因为此“模块”之外的代码无法调用它们。作为API一部分的方法将如下所示intM(args){X(foo);//thatcoulde.g.be"checkargsarevalid"./*herecomesM-specificcode*/Z(bar);//thatcoulde.g.be"update_state"}intM2(args){X

c++ - 使用 Doxygen 单独提取类的公共(public)方法列表

我正在为我的C++项目使用Doxygen,该项目将托管在github中。我想在自述文件中包含一个类的方法列表,并且我正在考虑使其自动化的方法。我将在repo中包含整个生成的html页面,但我认为通过在自述文件中包含主类的成员来提供API的概念会很好。到目前为止,我找不到生成Markdown文件的方法。我的下一个想法是编写一些shell脚本,它会自动复制成员列表并将其包含在自述文件中,为此我需要单独生成一个类的成员函数列表。是否可以配置doxygen来单独输出一个类的成员列表? 最佳答案 我最近有一个项目,我想将几​​个函数确定为公共

c++ - 最低公共(public)祖先优化

我有一个包含元素[0到N-1]的基本数组,其中每个元素都是一个结构,其索引始终指向数组中较早的位置.有一次,作为一个更大算法的一部分,我想在节点X和之后的任何节点之间找到一个特定的C最低共同祖先。intLCA(a,b){while(a!=b){if(a>b){a=nodes[a].parent;}else{b=nodes[b].parent;}}returna;}for(y=x+1;y上面的代码真的是伪代码。通过在使用时生成查找表,我设法稍微提高了LCA()的性能。像这样:intLCA(a,b){if(lookup[a,b]){returnlookup[a,b];}oa=a;ob=b;

c++ - 为什么不允许在 const 非 volatile 成员函数上消除公共(public)子表达式?

C++的目标之一是允许用户定义类型的行为与内置类型一样好。这似乎失败的一个地方是编译器优化。如果我们假设const非volatile成员函数在道德上等同于读取(对于用户定义的类型),那么为什么不允许编译器消除对此类函数的重复调用呢?例如classC{...public:intget()const;}intmain(){Cc;intx{c.get()};x=c.get();//whynotallowthecompilertoeliminatethiscall}允许这样做的论点与复制省略的论点相同:虽然它改变了操作语义,但它应该适用于遵循良好语义实践的代码,并在效率/模块化方面提供实质性改