c++实现java的SHA1PRNG算法

这篇具有很好参考价值的文章主要介绍了c++实现java的SHA1PRNG算法。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

 java AES 中出现的随机算法 SHA1PRNG 生成key:

// 对密钥进行处理
    private static byte[] getRawKey(byte[] seed) throws Exception {
        KeyGenerator kgen = KeyGenerator.getInstance(AES);
        //for android
        SecureRandom sr = null;
        // 在4.2以上版本中,SecureRandom获取方式发生了改变
         if (android.os.Build.VERSION.SDK_INT >= 17) {
             sr = SecureRandom.getInstance(SHA1PRNG, "Crypto");
         } else {
            sr = SecureRandom.getInstance(SHA1PRNG);
         }
        // for Java
        // secureRandom = SecureRandom.getInstance(SHA1PRNG);
        sr.setSeed(seed);
        kgen.init(128, sr); //256 bits or 128 bits,192bits
        //AES中128位密钥版本有10个加密循环,192比特密钥版本有12个加密循环,256比特密钥版本则有14个加密循环。
        SecretKey skey = kgen.generateKey();
        byte[] raw = skey.getEncoded();
        return raw;
    }

对应C++来说,就是做了两次sha1,流程如下:

1.生成安全密钥:

1)要加密的key明文:假设为dplyjc

2).将加密的string字符串明文调用sha1哈希出字节流形式的key

3).将sha1重置后,再调用sha1,传入字节流形式的key,生成字节流形式的key值。

class SHA1PRNG {
public:
    SHA1PRNG(const std::string& seed) : state(seed) {}

    std::string nextBytes(int numBytes) {
        std::string output;
        while (output.size() < numBytes) {
            byte hash[CryptoPP::SHA1::DIGESTSIZE];
            CryptoPP::SHA1().CalculateDigest(hash, (byte*)state.data(), state.size());
            state.assign((char*)hash, CryptoPP::SHA1::DIGESTSIZE);
            CryptoPP::SHA1().CalculateDigest(hash, (byte*)state.data(), state.size());
            state.assign((char*)hash, CryptoPP::SHA1::DIGESTSIZE);
            output += state;
        }
        return output.substr(0, numBytes);
    }

private:
    std::string state;
};

调用文章来源地址https://www.toymoban.com/news/detail-682458.html

SHA1PRNG prng("dplyjc");
std::string rawKey = prng.nextBytes(16); //key

到了这里,关于c++实现java的SHA1PRNG算法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • SHA1详解

    目录 一、介绍 二、与MD5的区别 1、对强行攻击的安全性 2、对密码分析的安全性 3、速度 三、应用 1、文件指纹 2、Git中标识对象 四、算法原理 1、填充消息 2、消息处理 3、数据运算 (1)链接变量 (2)步函数 SHA1又称安全哈希算法(Secure Hash Algorithm)。 对于长度小于2^64位的

    2024年02月09日
    浏览(35)
  • Android Studio中获取sha1证书指纹数据的方法以及keytool 错误: java.lang.Exception: 密钥库文件不存在: keystore的解决

    Android Studio通过电脑命令提示符获取SHA1 注:1、首先给keytool路径(C:Program FilesJavajdk1.8.0_172bin)加入环境变量。 2、我是直接的E盘根目录下操作的。 第一步、打开电脑命令提示符(运行-cmd); 第二步、命令提示符中敲入:  keytool -genkey -v -keystore debug.keystore -alias androiddebugke

    2024年02月07日
    浏览(49)
  • 获取 Android 的 SHA1 值

     1、调试版,可以直接在 Android studio 中的 gradle 中查看。也可以用下面方法进行 前提要先确定签名文件所在的路径:调试版默认使用的签名文件是debug.keystore,文件处于 C 盘用户目录下的.android文件夹下。打开命令行工具, 1、先 cd 到 .android的路径下 2、输入 keytool -list -v -k

    2024年02月09日
    浏览(40)
  • Python hashlib 加密方法(MD5、SHA1、SHA256、SHA52)

    Python 提供了 hashlib 模块来进行加密操作。在下面的文章中,我们将介绍 hashlib 模块的常用加密算法。 hashlib 模块是 Python 中用于加密的标准库。它包含了所有常见的哈希函数,例如 SHA1、SHA224、SHA256、SHA384、SHA512、MD5 等。这些哈希函数都是单向的,即只能对信息进行加密,而

    2024年02月07日
    浏览(45)
  • [虚幻引擎插件说明] DTSha – 蓝图SHA加密节点, SHA1, SHA224, SHA256, SHA384, SHA512加密

    本插件可以在虚幻引擎中使用蓝图对字符串或者文件进行SHA加密。 目录 1. 节点说明 SHA-1 Encrypt SHA-224 Encrypt SHA-256 Encrypt SHA-384 Encrypt SHA-512 Encrypt SHA-1 Of File SHA-224 Of File SHA-256 Of File SHA-384 Of File SHA-512 Of File 2. 案例演示 ​编辑 3. 插件下载 SHA-1 Encrypt 字符串进行SHA-1加密,字符串

    2024年02月16日
    浏览(67)
  • Android 应用签名证书的SHA1、MD5、SHA256值在哪获取?

    SHA1值分为发布版和调试版。MD5、SHA256与SHA1的获取是一样的。 调试版就是我们平时开发测试时用的默认签名文件。这个默认的签名文件一般是在c盘的用户名目录下的.android文件夹内。 默认文件就是  debug.keystore 获取调试版的SHA1值 : 回车后即可看到调试版的SHA1值了。

    2024年02月12日
    浏览(59)
  • Android创建签名文件,并获取签名文件MD5,SHA1,SHA256值

    一、创建Android签名文件         使用Android Studio开发工具,可视化窗口进行创建 第一步:点击AndroidStudio导航栏上的 Build→Generate Signed Bundle / APK 第二步:选择APK选项    第三步:创建签名文件 第四步:输入创建签名的文件的各内容信息 点击ok,即可完成签名的文件的创建

    2024年02月07日
    浏览(59)
  • uniapp安卓签名证书生成,签名证书的SHA1,SHA256,MD5获取

    uniapp安卓证书生成有两种方式,一种是去dcloud开发者中心生成证书,另一种是安装jre环境,自己生成证书 第一种 dcloud生成证书 去该项目对应的应用处,生成证书需要等几分钟,生成后可以查看证书信息 第二种 自己生成 先安装jre,再配置一下环境变量 jre8下载地址 去D盘添加

    2024年02月16日
    浏览(62)
  • Android studio获取证书的MD5/SHA1/SHA-256以及公钥的方法

    Android studio 获取MD5 SHA1 SHA-256 值命令:./gradlew signingReport Android studio 获取公钥:keytool -export -alias key0 -keystore key.keystore -file zhengshu.cer 一、获取MD5 SHA1 SHA-256 值 在Android项目中执行命令:./gradlew signingReport 然后以上操作执行完成之后,搜索你的证书名称,找到以下数据: 二、获

    2024年02月03日
    浏览(73)
  • Android如何获取调试版、发布版SHA1安全码?

    (方法一:如何获取Android调试版SHA1安全码?)通过dos命令窗口来获取Android调试版SHA1安全码。1. Windows快捷键:win + R 键。2.再输入cmd打开dos窗口。3.输入 cd.android + 回车 。4. 输入命令: keytool -list -v -keystore debug.keystore + 回车 。遇到输入密钥库口令也直接回车。 图一: 图二:

    2024年02月04日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包