首页 > 其他分享 >RSA 加密

RSA 加密

时间:2023-07-19 17:46:59浏览次数:29  
标签:Convert return string RSA rsa 加密 byte

//通用RSA加密,可兼容.Net 6.0以下
string CommonRSAEncrypt(string publicKeyBase64, string plaintext)
{
    try
    {
        byte[] publicKeyBytes = Convert.FromBase64String(publicKeyBase64);
        AsymmetricKeyParameter publicKeyParam = PublicKeyFactory.CreateKey(publicKeyBytes);
        IBufferedCipher rsa = CipherUtilities.GetCipher("RSA");
        rsa.Init(true, publicKeyParam);
        byte[] plaintextBytes = Encoding.UTF8.GetBytes(plaintext);
        byte[] ciphertextBytes = rsa.DoFinal(plaintextBytes);
        string encryptedText = Convert.ToBase64String(ciphertextBytes);

        return encryptedText;
    }
    catch (Exception e)
    {
        Console.WriteLine(e);
    }

    return null;
}

//RSA 加密,.Net6.0版本可用
string RSAEncrypt(string publicKey, string password)
{
    try
    {
        byte[] decoded = Convert.FromBase64String(publicKey);
        RSACryptoServiceProvider provider = new RSACryptoServiceProvider();
        provider.ImportSubjectPublicKeyInfo(decoded, out int bytesRead);
        // RSA加密
        byte[] bytesToEncrypt = Encoding.UTF8.GetBytes(password);
        byte[] ciphertext = provider.Encrypt(bytesToEncrypt, false);
        //**此处Base64编码,开发者可以使用自己的库**
        string outStr = Convert.ToBase64String(ciphertext);
        //outStr 是加密密文
        return outStr;
    }
    catch (Exception e)
    {
        Console.WriteLine(e);
    }
    return null;
}

//通用RSA解密,可兼容.Net 6.0以下
string CommonRSADecrypt(string privateKeyBase64, string ciphertext)
{
    try
    {
        byte[] privateKeyBytes = Convert.FromBase64String(privateKeyBase64);
        AsymmetricKeyParameter privateKeyParam = PrivateKeyFactory.CreateKey(privateKeyBytes);
        IBufferedCipher rsa = CipherUtilities.GetCipher("RSA");
        rsa.Init(false, privateKeyParam);
        byte[] ciphertextBytes = Convert.FromBase64String(ciphertext);
        byte[] decryptedBytes = rsa.DoFinal(ciphertextBytes);
        string decryptedText = Encoding.UTF8.GetString(decryptedBytes);

        return decryptedText;
    }
    catch (Exception e)
    {
        Console.WriteLine(e);
    }

    return null;
}

标签:Convert,return,string,RSA,rsa,加密,byte
From: https://www.cnblogs.com/SmallChen/p/17566291.html

相关文章

  • .Net 对RSA加密结果跟JAVA加密结果不一致问题处理
    stringpublicRsaKey="MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6UCsvO/M/Q51ydlxvuvwy8W9yXkAWLLiG5eA2Duha9cr/XoWrQcETf7PRMNYaQs616PGhj0tnPfxfDltmeqTJQf8rHNxevIZ9nQ0N0/8PIlVszubpMyAHnEis2OLMnLENGyepAlabFGDMDPzRpf0ibL0Q/R15BuTzII5gunzAbwIDAQAB";stri......
  • php导出带加密的excel
    最近需要用yii2做一个导出excel带密码设置的功能,找了好多都没有达到目的,后来终于在git找到了一个,不过得php版本7.4以上https://github.com/nick322/secure-spreadsheet$objWriter=newXlsx($objPHPExcel);$file_path=$title.'.xlsx';$objWriter->save......
  • 谓词加密(Predicate Encryption, PE)-学习笔记
    该文对谓词加密描述的较为详细,可供参考。出处:廖定锋,王常吉.谓词加密理论与应用研究[D].中山大学硕士学位论文,2010:24-25. ......
  • C语言如何实现DES加密与解密
    C语言实现DES加密解密#include"des.h"//移位表staticTable_sizeconstshiftTable[NumberOfKeys]={1,1,2,2,2,2,2,2,1,2,2,2,2,2,2,1};//E扩展表staticTable_sizeconsteTable[des_key_pc2_standard]={ 32,1,2,3,4,5,4,5,6,7,......
  • 随机化 base64 加密
    随机化base64加密项目原址:Jeefy/jtim-enc·GitLab技术采用双重随机化技术。第一重随机化是利用固定的随机种子改变base64解码的映射数组。第二重随机化利用单位掩码改变改变固定的随即种子。好像也就没有了……......
  • C/C++文件加密解密[2023-07-18]
    C/C++文件加密解密[2023-07-18]题目27:文件加密文件的传输会有明文和密文的区别,明文发送是不安全的,用一个程序实现发送文件的加密和解密操作。加密算法,密钥设计由同学自己选择现有的加密解密算法或是自己设计。要求:(1)对文件的字符根据加密算法,实现文件加密。(2)对操作给出必......
  • Proj. CMI Paper Reading: Conversational Automated Program Repair
    Abstract背景:之前APR与大模型的结合仅仅使用了一些特殊构建的input/prompt本文:conversationalAPR方法:使用long-termcontextwindow来记录之前的validationfeedback实验:在10个LLMs上进行对比展示改进......
  • Unified Conversational Recommendation Policy Learning via Graph-based Reinforcem
    图的作用:图结构捕捉不同类型节点(即用户、项目和属性)之间丰富的关联信息,使我们能够发现协作用户对属性和项目的偏好。因此,我们可以利用图结构将推荐和对话组件有机地整合在一起,其中对话会话可以被视为在图中维护的节点序列,以动态地利用对话历史来预测下一轮的行动。由四个主要组......
  • java Base64 加密
    JavaBase64加密解密详解在实际应用开发中,我们经常需要对数据进行加密和解密操作。其中,Base64是一种常用的编码方式,它将二进制数据转换为可打印的ASCII字符串,使得数据可以在网络传输中进行安全的传递。本文将介绍Java中的Base64加密和解密操作,并提供相应的代码示例。Base......
  • 小程序二维码配置+前端生成带参二维码+数据加密解密+地址逆解析
    这是一个关于用户回访调查的小程序,技术栈vue3+uniapp。遇到的知识点如下:1.微信公众平台认证的小程序账号只对应一个小程序,一个邮箱只能绑定一个小程序,如果企业之前有认证过微信公众号的,可以复用微信公众号的资料认证小程序,这样就不需要另外收认证费。(复用公众号资料认证小程序流......