zoukankan      html  css  js  c++  java
  • C#基础笔记(第十四天)

    1.MD5加密

    用户在数据库存密码需要进行再加密,这样一个过程叫MD5加密
    只要涉及到存用户的密码一定要用MD5加密
    MD5密码一般都是16进制的
    把一个密码转换成16进制的过程就叫MD5加密
    把字符串加密成MD5,这样一个过程是不可逆的。只能把字符串变成MD5值,不能把MD5值变成字符串
    但有人模拟过MD5加密的过程,写了一套算法,解密的过程。但不可能和加密一模一样,但一些简单的都可以解出来,如123
    但是复杂一点就解密不了

    练习加密 123 MD5:202cb962ac59075b964b07152d234b70
    shift+alt+f10 命名空间

    字节数组---字符串 理论上需要3种方式
    1.将字节数组中每个元素按照指定的编码格式解析成字符串
    2.直接将数组ToString();
    3.将字节数组中的每个元素ToString();

    .ToString("x") 将十进制转换为十六进制

    ToString("")里面放东西可以转格式,需要的时候查一下

    static void Main(string[] args)
    {
    //MD5:202cb962ac59075b964b07152d234b70
    //x2 : 202cb962ac59075b964b07152d234b70
    //x : 202cb962ac5975b964b7152d234b70
    //3244185981728979115075721453575112(十进制)---转换16进制
    string s = GetMD5("123");
    Console.WriteLine(s);
    Console.ReadKey();
    }
    public static string GetMD5(string str)
    {
    //创建MD5对象
    MD5 md5 = MD5.Create();
    //开始加密
    //需要将字符串转成字符数组
    byte[] buffer = Encoding.GetEncoding("GBK").GetBytes(str);
    //返回一个加密好的字节数组
    byte[] MD5Buffer= md5.ComputeHash(buffer);
    //将字节数组转为字符串
    //输出是乱码的原因(编码可以排除掉了)
    //前四行代码不会出现什么问题
    //问题出在下面这行,我们最终要的是16进制
    //字节数组---字符串 理论上需要3种方式
    //将字节数组中每个元素按照指定的编码格式解析成字符串
    //直接将数组ToString();(PASS,因为直接转就是命名空间)
    //将字节数组中的每个元素ToString();
    //return Encoding.GetEncoding("GBK").GetString(MD5Buffer);

    //189 275 345 我爱你 (PASS)
    //189 275 345 189275345

    string strNew = "";
    for (int i = 0; i < MD5Buffer.Length; i++)
    {
    strNew += MD5Buffer[i].ToString("x2");
    }
    return strNew;

    2.桌面应用程序
    1、winform应用程序是一种智能客户端技术,我们可以使用winform应用程序帮助我们获得信息或者传输信息等
    asp和asp.net不是一个东西,asp落伍了
    winform应用程序学的就是托拉拽
    XAML语言是 做winform UI

    form1.designer.cs 窗口设计的时候,编译器自动生成代码
    form1.resx 资源文件
    form1 后台代码
    一直在操作的就是form1.cs

    2、属性
    Name:在后台要获得前台的空间对象,需要使用Name属性
    visible:指示一个控件是否可见
    enabled:指示一个控件是否可用

    3、事件:发生一件事情。
    注册事件:双击控件注册的都是控件默认被选中的那个事件。
    触发事件:

    F4注册事件

    4、
    在Main函数当中创建的窗体对象,我们称之为这个窗体应用程序的主窗体。
    也就意味着,当你将主窗体关闭后,整个应用程序都关闭了。

    3.
    public partial class Form1 : Form
    {
    public Form1()
    {
    InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e)
    {
    MessageBox.Show("我也爱你哟思密达");
    this.Close();//关闭主窗体
    }

    private void button2_MouseEnter(object sender, EventArgs e)
    {
    //给按钮一个新的坐标
    //这个按钮活动的最大宽度就是 窗体的宽度减去按钮的宽度
    int x = this.ClientSize.Width-button2.Width;
    int y = this.ClientSize.Height - button2.Height;

    Random r = new Random();
    //要给按钮一个随机的坐标
    button2.Location = new Point(r.Next(0,x+1),r.Next(0,y+1));
    }

    private void button2_Click(object sender, EventArgs e)
    {
    MessageBox.Show("还是被你这个屌丝点到了");
    this.Close();
    }

    5、TextBox控件
    WorWrap:指示文本框是否换行。
    PassWordChar:让文本框显示一个单一的字符
    ScollBars:是否显示滚动条
    事件:TextChanged 当文本框中的内容发生改变的时候触发这个事件。

    4.Timer
    abcde
    bcdea
    string str="abcde";
    str=str.substring(1)+str.substring(0,1);

    6、Timer
    在指定的时间间隔内做一件指定的事情。

    5.简单记事儿本应用程序
    1)、在程序加载的时候,取消文本框的自动换行,以及让两个按钮和文本框隐藏
    2)、点击登录,判断是否登录成功
    3)、自动换行功能
    4)、保存文本到指定目录下

    7.多选和单选控件
    公共控件
    checkBox 方形可选
    radioButton 圆形可选
    容器
    GroupBox 多选集合

    单选和多选
    checked:指示这个控件是否处于选中状态。
    默认状况下,在一个窗体中,所有的单选按钮只允许选中一个,可以使用groupbox进行分组
    分组后可以多选

    8.MDI窗体的设计
    1、首先确定一个父窗体 将IsMdiContainer设置为true。
    创建子窗体--菜单和工具栏--MenuStrip
    2、创建子窗体,并且设置他们的父窗体。
    LayoutMdi(MdiLayout.TileHorizontal) 横向排列
    LayoutMdi(MdiLayout.TileVertical) 纵向排列


    9.PictureBox
    pictureBox1.Image=Image.FromFile(@"图片路径");
    path操作路径的
    file操作文件的
    Directory操作文件夹的 获取路径 Directory.GetFiles(@"文件夹路径")

    //设置图片如何在PictureBox1中显示
    pictureBox1.SizeMode = PictureBoxSizeMode.StretchImage;

  • 相关阅读:
    软件测试第五次作业
    第四次博客作业(第一题)
    实验二
    安全开发
    代码审计入门
    破壳笔记-渗透测试
    Libra的思考
    深度学习构建视频人脸识别模型
    tensorflow
    数据结构(长期)
  • 原文地址:https://www.cnblogs.com/VSMinos/p/7873443.html
Copyright © 2011-2022 走看看