做一个aspnet网站管理框架之dll介绍

做一个aspnet网站管理框架

常用dll介绍

首先对于经常用的dll进行整理介绍,然后再做一些自定义的dll,今天先开始吧,拿着别人的先边研究,边记录。

BouncyCastle.Crypto.dll

因为C#的RSA加密解密只有公钥加密,私钥解密,没有私钥加密,公钥解密。在网上查了很久也没有很好的实现。BouncyCastle的文档少之又少。很多人可能会说,C#也是可以的,通过Biginteger开源类来实现,不过那个是有一个文章,不过他加密出来的是16进制结果的。根本不能和JAVA互通。连加密出来的都不和C#原生的加密出来的结果格式一样。所以还是没有好的解决方法。

接下来还是不断的找资料,找方法。找朋友找同事。个个都找。问题是有的,方法也是有的,所以总结各路大神之后写了这个类。实现了私钥加密,公钥解密。并通过在线的校验之后,发布上来。大家可以做一个DEMO,然后进去在线RSA加密解密校验。

在线RSA,DES等加密解密地址:

http://tool.chacuo.net/cryptrsapubkey

下面直接粘贴代码,不多说:

BouncyCastle相关DLL,估计不用我多说,大家可以百度下载。然后引用就可以了!

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

using Org.BouncyCastle.Asn1.Pkcs;
using Org.BouncyCastle.Asn1.X509;
using Org.BouncyCastle.Crypto.Generators;
using Org.BouncyCastle.Crypto.Parameters;
using Org.BouncyCastle.Math;
using Org.BouncyCastle.Pkcs;
using Org.BouncyCastle.Security;
using Org.BouncyCastle.Crypto.Engines;
using Org.BouncyCastle.X509;
using Org.BouncyCastle.Crypto;
using Org.BouncyCastle.Asn1;
using Org.BouncyCastle.Crypto.Encodings;

namespace CryptionUtils
{
public class RSAForJava
{

    public RSAForJava()
    {
         
    }
    /// <summary>
    /// KEY 结构体
    /// </summary>
    public struct RSAKEY
    {
        /// <summary>
        /// 公钥
        /// </summary>
        public string PublicKey
        {
            get;
            set;
        }
        /// <summary>
        /// 私钥
        /// </summary>
        public string PrivateKey
        {
            get;
            set;
        }
    }
    public RSAKEY GetKey()
    {
        //RSA密钥对的构造器  
        RsaKeyPairGenerator keyGenerator = new RsaKeyPairGenerator();

        //RSA密钥构造器的参数  
        RsaKeyGenerationParameters param = new RsaKeyGenerationParameters(
            Org.BouncyCastle.Math.BigInteger.ValueOf(3),
            new Org.BouncyCastle.Security.SecureRandom(),
            1024,   //密钥长度  
            25);
        //用参数初始化密钥构造器  
        keyGenerator.Init(param);
        //产生密钥对  
        AsymmetricCipherKeyPair keyPair = keyGenerator.GenerateKeyPair();
        //获取公钥和密钥  
        AsymmetricKeyParameter publicKey = keyPair.Public;
        AsymmetricKeyParameter privateKey = keyPair.Private;

        SubjectPublicKeyInfo subjectPublicKeyInfo = SubjectPublicKeyInfoFactory.CreateSubjectPublicKeyInfo(publicKey);
        PrivateKeyInfo privateKeyInfo = PrivateKeyInfoFactory.CreatePrivateKeyInfo(privateKey);

        
        Asn1Object asn1ObjectPublic = subjectPublicKeyInfo.ToAsn1Object();

        byte[] publicInfoByte = asn1ObjectPublic.GetEncoded("UTF-8");
        Asn1Object asn1ObjectPrivate = privateKeyInfo.ToAsn1Object();
        byte[] privateInfoByte = asn1ObjectPrivate.GetEncoded("UTF-8");  

        RSAKEY item = new RSAKEY()
        {
            PublicKey =Convert.ToBase64String(publicInfoByte),
            PrivateKey=Convert.ToBase64String(privateInfoByte)
        };
        return item;
    }
    private AsymmetricKeyParameter GetPublicKeyParameter(string s)
    {
        s = s.Replace("\r", "").Replace("\n", "").Replace(" ","");
        byte[] publicInfoByte = Convert.FromBase64String(s);
        Asn1Object pubKeyObj = Asn1Object.FromByteArray(publicInfoByte);//这里也可以从流中读取,从本地导入   
        AsymmetricKeyParameter pubKey = PublicKeyFactory.CreateKey(publicInfoByte);
        return pubKey;
    }
    private AsymmetricKeyParameter GetPrivateKeyParameter(string s)
    {
        s = s.Replace("\r", "").Replace("\n", "").Replace(" ", "");
        byte[] privateInfoByte = Convert.FromBase64String(s);
       // Asn1Object priKeyObj = Asn1Object.FromByteArray(privateInfoByte);//这里也可以从流中读取,从本地导入   
       // PrivateKeyInfo privateKeyInfo = PrivateKeyInfoFactory.CreatePrivateKeyInfo(privateKey);
        AsymmetricKeyParameter priKey = PrivateKeyFactory.CreateKey(privateInfoByte);
        return priKey;
    }
    public string EncryptByPrivateKey(string s,string key)
    {
        //非对称加密算法,加解密用  
        IAsymmetricBlockCipher engine = new Pkcs1Encoding(new RsaEngine());
      
      
        //加密  
        
        try
        {
            engine.Init(true, GetPrivateKeyParameter(key));
            byte[] byteData = System.Text.Encoding.UTF8.GetBytes(s);
            var ResultData = engine.ProcessBlock(byteData, 0, byteData.Length);
            return Convert.ToBase64String(ResultData);
            //Console.WriteLine("密文(base64编码):" + Convert.ToBase64String(testData) + Environment.NewLine);
        }
        catch (Exception ex)
        {
            return ex.Message;
            
        }  
    }
    public string DecryptByPublicKey(string s,string key)
    {
        s = s.Replace("\r", "").Replace("\n", "").Replace(" ", "");
        //非对称加密算法,加解密用  
        IAsymmetricBlockCipher engine = new Pkcs1Encoding( new RsaEngine());
          

        //解密  
        
        try
        {
            engine.Init(false, GetPublicKeyParameter(key));
            byte[] byteData = Convert.FromBase64String(s);
            var ResultData = engine.ProcessBlock(byteData, 0, byteData.Length);
            return System.Text.Encoding.UTF8.GetString(ResultData);
            
        }
        catch (Exception ex)
        {
            return ex.Message;
             
        }  
    }
}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
基于asp.net的学生信息管理网站源码是一个用于管理学生个人信息、课程安排、成绩记录等功能的网站。源码的实现利用了asp.net的技术框架,包括了C#编程语言、ASPX网页设计、以及后端SQL Server数据库的支持。该网站源码主要包括了以下几个模块: 1. 学生信息管理模块:该模块包括学生个人信息的录入、修改和删除功能,包括姓名、性别、学号、班级等基本信息的管理。 2. 课程管理模块:该模块包括学生所选课程的安排和查询功能,包括课程名称、授课教师、上课时间等信息的管理。 3. 成绩记录模块:该模块包括学生在各门课程的成绩记录和分数查询功能,包括平时成绩、考试成绩等详细记录。 4. 系统管理模块:该模块包括了网站后台管理的功能,包括管理员账号的权限管理、系统设置和日志记录等功能。 整个网站源码的实现遵循了asp.net的架构设计原则,使用了MVC模式进行代码组织和分层,实现了前台网页的视图设计和后台数据的处理逻辑分离。同时,也充分利用了asp.net的特性,比如数据绑定、验证控件和用户控件等,以提高网站的交互性和用户体验。 该学生信息管理网站源码的开发可以为学校或教育机构提供一个便捷的信息管理工具,实现学生信息的集中管理和查询,为学校教务管理工作提供了便利。同时,也可以作为asp.net技术学习者的一个参考范例,帮助他们理解和掌握asp.net在实际项目中的应用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值