1.MD5加密 用戶在資料庫存密碼需要進行再加密,這樣一個過程叫MD5加密只要涉及到存用戶的密碼一定要用MD5加密MD5密碼一般都是16進位的把一個密碼轉換成16進位的過程就叫MD5加密把字元串加密成MD5,這樣一個過程是不可逆的。只能把字元串變成MD5值,不能把MD5值變成字元串但有人模擬過MD5 ...
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;