和M2M功能一样的小工具

 
using  System;
using  System.Collections.Generic;
using  System.ComponentModel;
using  System.Data;
using  System.Drawing;
using  System.Text;
using  System.Windows.Forms;

namespace  MyM2m
{
    
public partial class Form1 : Form
    
{
        
public Form1()
        
{
            InitializeComponent();
        }

        
//去除空格
        private string formatString(string str)
        
{
            
string fStr = str.Trim();
            fStr 
= fStr.Replace(" """);
            
return fStr;
        }

        
/// <summary>
        
/// 获得除去空格后的数据,然后每两位组合成一个16进制字符串
        
/// </summary>
        
/// <param name="code"></param>
        
/// <returns></returns>


        
private string[] getCodes(string code)
        
{
            
int count=code.Length/2;
            
string[] codes = new string[count];
            
string str = this.formatString(code);
            
string getStr = "";
            
for (int i = 0; i < count; i++)
            
{
                
if (str.Length == 2)
                
{
                    getStr 
= str;
                }

                
else
                
{
                    getStr 
= str.Substring(02);
                    str 
= str.Substring(2, str.Length - 2);
                }

                
//getStr = ConvertHex(getStr);
                codes[i] = getStr;
            }

            
return codes;
        }


        
//解密,就是简单的异或运算
        private String[] breakKey(string[] codes, string key)
        
{
            
            
for (int i = 0; i < codes.Length; i++)
            
{
                
try
                
{

                    codes[i] 
= (Convert.ToByte(codes[i], 16^ Convert.ToByte(key, 16)).ToString();
                }

                
catch
                
{
                    
throw new Exception("数据格式不正确或不为16进制格式");
                }

            }

            
return codes;
        }


        
//解密按钮
        private void button1_Click(object sender, EventArgs e)
        
{
            
this.rtxtRealCode.Text = "";
            
string str = this.rtxtGetCode.Text;
            str 
= this.formatString(str);
            
string key=this.txtKey.Text;
            
try
            
{
                
string[] oldStr = breakKey(getCodes(str), key);
                
for (int i = 0; i < oldStr.Length; i++)
                
{
                    
this.rtxtRealCode.Text += ConvertHex(oldStr[i]) + " ";
                }

            }

            
catch(Exception ex)
            
{
                MessageBox.Show(ex.Message);
            }

            
        }


        
//加密按钮
        private void button2_Click(object sender, EventArgs e)
        
{
            
this.rtxtGetCode.Text = "";
            
string str = this.rtxtRealCode.Text;
            str 
= this.formatString(str);
            
string key = this.txtKey.Text;
            
string[] oldStr = breakKey(getCodes(str), key);
            
for (int i = 0; i < oldStr.Length; i++)
            
{
                
this.rtxtGetCode.Text += ConvertHex(oldStr[i]) + " ";
            }

        }



        
/// 返回16进制字符
        public static string GetHexChar(string value)
        
{
            
string sReturn = string.Empty;
            
switch (value)
            
{
                
case "10":
                    sReturn 
= "A";
                    
break;
                
case "11":
                    sReturn 
= "B";
                    
break;
                
case "12":
                    sReturn 
= "C";
                    
break;
                
case "13":
                    sReturn 
= "D";
                    
break;
                
case "14":
                    sReturn 
= "E";
                    
break;
                
case "15":
                    sReturn 
= "F";
                    
break;
                
default:
                    sReturn 
= value;
                    
break;
            }

            
return sReturn;
        }


        
/// <summary>
        
/// 返回16进制
        
/// </summary>
        
/// <param name="value">value</param>
        
/// <returns></returns>


        
public static string ConvertHex(string value)
        
{
            
string sReturn = string.Empty;
            
try
            
{

                
while (int.Parse(value) > 16)
                
{
                    
int v = int.Parse(value);
                    sReturn 
= GetHexChar((v % 16).ToString()) + sReturn;
                    value 
= Math.Floor(Convert.ToDouble(v / 16)).ToString();
                }

                sReturn 
= GetHexChar(value) + sReturn;
                
switch (Convert.ToByte(sReturn,16).ToString())
                
{
                    
case "10":
                        sReturn 
= "0A";
                        
break;
                    
case "11":
                        sReturn 
= "0B";
                        
break;
                    
case "12":
                        sReturn 
= "0C";
                        
break;
                    
case "13":
                        sReturn 
= "0D";
                        
break;
                    
case "14":
                        sReturn 
= "0E";
                        
break;
                    
case "15":
                        sReturn 
= "0F";
                        
break;
                }

            }

            
catch
            
{
                sReturn 
= "###Valid Value!###";
            }

            
return sReturn;
        }


        
private void Form1_FormClosed(object sender, FormClosedEventArgs e)
        
{
            Application.Exit();
        }





    }


    
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值