RC6加密解密算法C#实现源码!

本文提供了一篇关于RC6加密解密算法的C#实现,包括完整的类代码和加密解密过程。作者对朱明海在维普资讯网上发布的C# RC6实现进行了完善,适用于128、192和256位加密。此外,还包含了构造函数、加密向量选择、密钥扩展等功能,并提供了示例用法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本人写的C#类,该算法完善了《朱明海--维普资讯网--对称加解密算法RC6的C#实现》未完善的源码,以供大家学习!

该RC6加密解密算法如有错误,请大家批评指正。

更多内容请参考:本人写的  C#_RC6加密解密方法 http://download.youkuaiyun.com/source/2864830

 

 

#region
using System;
using System.Collections.Generic;
using System.Text;


namespace WindowsApplication1
{

    class RC6
    {
        /// <summary>
        /// 对称加解密算法RC6的C#实现
        /// 公开维普网_朱明海先生未公布的源码
        /// 程序完善设计者:四川威远_老耙子 先生
        /// 2010-11-28
        /// 本程序只提供了明文长度32的算法。
        /// 如有需要,请与本人联系。
        /// Mail:chscwyyg@163.com 电话:0832-8229211
        /// </summary>
        private string m_sEncryptionKey;                                             //密码方法通过KEY属性返回值
        public string m_sCryptedText;                                                //加密解密字符串返回值
        private int m_nChipherlen;                                                   //密码字节数,控制加密最低为128,最好256,间192,有三种选择种16,24,32
        private const int m_nWord = 32;
        private const int r = 20;
        private const int c = 4;
        private uint[] m_nKeyExpandBox;                                              //系统密钥数组
        uint[] n_WordBox;                                                            //用户私有密钥
        public Encoding Enc_default = Encoding.Unicode;

        /// <summary>
        /// 左位移运算函数
        /// </summary>
        /// <param name="x"></param>
        /// <param name="y"></param>
        /// <param name="w"></param>
        /// <returns></returns>
        ///
        public uint ROTL(uint x, uint y, int w)
        { return ((x << (int)(y & (0xFF))) | (x >> (int)(w - (y & (0xFF))))); }//或:return ((x << (int)(y & (w-1))) | (x >> (int)(w - (y & (w-1)))));

        /// <summary>
        /// 右位移运算函数
        /// </summary>
        /// <param name="x"></param>
        /// <param name="y"></param>
        /// <param name="w"></param>
        /// <returns></returns>
        public uint ROTR(uint x, uint y, int w)
        { return ((x >> (int)(y & (0xFF))) | (x << (int)(w - (y & (0xFF))))); }//或:return ((x >> (int)(y & (w-1))) | (x << (int)(w - (y & (w-1)))));

        /// <summary>
        /// 构造函数
        /// </summary>
        public RC6()
        {
            IV = 16;                                        //如果用户没有设置加密方式系统默认为128位加密
            //                                                IV返回m_nChipherlen
            m_nKeyExpandBox = new uint[8 * m_nChipherlen];  //密钥数组大小为加IV*8
        }
        /// <summary>
        /// 构造函数可输入加密向量
        /// </summary>
        /// <param name="iv"></param>
        public RC6(int iv)
        {
            IV = iv;            //返顺       m_nChipherlen
            this.m_nKeyExpandBox = new uint[8 * m_nChipherlen];
        }
        /// <summary>
        /// 定义一个属性,通过属性输入用户密钥并返回
        /// 存储到m_sEncryptionKey
        /// </summary>
        public string KEY
        {
            get { return this.m_sEncryptionKey; }
            set { this.m_sEncryptionKey = value; }
        }

        /// <summary>
        /// 加密向量选择
        /// 128方式IV=16
        /// 192方法IV=24
        /// 256方法IV=32
        /// </summary>
        public int IV
        {
            get { return m_nChipherlen; }
            set { m_nChipherlen = value; }
        }

        /// <summary>
        /// 加密向量验证函数
        /// 有错误返回最小或最大的向量设置
        /// </summary>
        /// <returns></returns>

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值