/// <summary>產生圖形驗證的圖片</summary>
[WebMethod(EnableSession = true)]
public string CreateCaptcha() {
// 存放用來產生亂數的檔名規則
string[] Codes = "A,B,C,D,E,F,G,H,J,K,L,M,N,P,Q,R,S,T,U,V,W,X,Y,Z,2,3,4,5,6,7,8,9".Split(',');
// 存放產生亂數後的檔名
string CaptchaCode = "";
// 宣告一個亂數個體
Random RadomCode = new Random();
// 用來存放最後壓縮產生出來的驗證圖片
Image[] CaptchaData = null;
// 用來存放最後產生出來的驗證圖片
Image ImageCaptcha = null;
// 用來存放亂數產生出來的圖形
List<Image> CaptchaImage = new List<Image>();
// 用來存放驗證碼
string VerifyCode = "";
// 用來存放轉陣列的圖片
byte[] imageBytes = null;
// 用來存放Base64 Code
string Base64String = "";
// 加入底圖
CaptchaImage.Add(Image.FromFile(Server.MapPath("~/") + "/Images/VerifyImage/Background.png"));
// 亂數產生4張圖片
for (int Index = 1; Index <= 4; Index++) {
// 亂數產生檔名
CaptchaCode += Codes[RadomCode.Next(32)];
// 紀錄驗證碼
VerifyCode += CaptchaCode;
// 產生出檔名並找到指定位置檔案存放至List
CaptchaImage.Add(Image.FromFile(Server.MapPath("~/") + "/Images/VerifyImage/" + Index + CaptchaCode + ".png"));
// 清空暫存資訊
CaptchaCode = "";
}
// 把圖片List轉成Array
CaptchaData = CaptchaImage.ToArray();
// 合併圖片
ImageCaptcha = this.UniteImage(100, 30, CaptchaData);
// 紀錄驗證碼到session
HttpContext.Current.Session[SessionKey.Captcha] = VerifyCode;
// 使用MemoryStream存放圖片
using (MemoryStream MemoryStr = new MemoryStream()) {
// 將圖檔存進MemoryStream並指定格式為png
ImageCaptcha.Save(MemoryStr, ImageFormat.Png);
// 將圖檔轉陣列存入
imageBytes = MemoryStr.ToArray();
// 將圖片轉成Base64並存放入Base64String字串中
Base64String = Convert.ToBase64String(imageBytes);
// 回傳字串
return Base64String;
}
}
/// <summary>合併圖片</summary>
/// <param name="paramWidth">傳入合併後的圖片寬度</param>
/// <param name="paramHeight">傳入合併後的圖片高度</param>
/// <param name="paramImgs">傳入要合併的圖片陣列</param>
/// <returns>將回傳整合後的圖片</returns>
public System.Drawing.Image UniteImage(Int32 paramWidth, Int32 paramHeight, System.Drawing.Image[] paramImgs) {
//用來紀錄要回傳的圖片
System.Drawing.Image ReturnImg = new System.Drawing.Bitmap(paramWidth, paramHeight);
//用來處理整合圖像的物件
System.Drawing.Graphics GraphicsTemp = System.Drawing.Graphics.FromImage(ReturnImg);
//指定要清除的色系
GraphicsTemp.Clear(System.Drawing.Color.Transparent);
//加入圖案
for (Int32 Index = 0; Index <= paramImgs.GetLength(0) - 1; Index++) {
GraphicsTemp.DrawImage(paramImgs[Index], 0, 0, paramImgs[Index].Width, paramImgs[Index].Height);
}
return ReturnImg;
}
2014年11月12日 星期三
[C#]亂數產生密碼
/// <summary>以亂數生成新密碼</summary>
/// <returns>回傳認證碼</returns>
public string CreateNewPassword() {
// 使用 RNGCryptoServiceProvider 產生由密碼編譯服務供應者 (CSP) 提供的亂數產生器
RNGCryptoServiceProvider RNGPService = new RNGCryptoServiceProvider();
// 用來存放隨機序列值
byte[] RandomByte = new byte[4];
// 用來存放隨機亂數值
char[] Chars = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ".ToCharArray();
// 用來存放生成的亂數密碼
StringBuilder Str = new StringBuilder();
// 初始密碼長度
int PasswordLength = 10;
// 用來存放位元陣列轉換後的結果
int Value = 0;
// 開始生成密碼
for (int Index = 0; Index < PasswordLength; Index++) {
// 取得隨機編譯的亂數值
RNGPService.GetBytes(RandomByte);
// 用來存放位元陣列轉換後的結果
Value = BitConverter.ToInt32(RandomByte, 0);
// 產生一個非負數且最大值為隨機亂數值長度以下的亂數
Value = Value % (Chars.Length - 1 + 1);
if (Value < 0) Value = -Value;
// 印出亂數
Str.Append(Chars[Value]);
}
return Str.ToString();
}
/// <returns>回傳認證碼</returns>
public string CreateNewPassword() {
// 使用 RNGCryptoServiceProvider 產生由密碼編譯服務供應者 (CSP) 提供的亂數產生器
RNGCryptoServiceProvider RNGPService = new RNGCryptoServiceProvider();
// 用來存放隨機序列值
byte[] RandomByte = new byte[4];
// 用來存放隨機亂數值
char[] Chars = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ".ToCharArray();
// 用來存放生成的亂數密碼
StringBuilder Str = new StringBuilder();
// 初始密碼長度
int PasswordLength = 10;
// 用來存放位元陣列轉換後的結果
int Value = 0;
// 開始生成密碼
for (int Index = 0; Index < PasswordLength; Index++) {
// 取得隨機編譯的亂數值
RNGPService.GetBytes(RandomByte);
// 用來存放位元陣列轉換後的結果
Value = BitConverter.ToInt32(RandomByte, 0);
// 產生一個非負數且最大值為隨機亂數值長度以下的亂數
Value = Value % (Chars.Length - 1 + 1);
if (Value < 0) Value = -Value;
// 印出亂數
Str.Append(Chars[Value]);
}
return Str.ToString();
}
訂閱:
文章 (Atom)
[Laravel]環境架設,使用docker + laradock
1.選擇使用docker + laradock在windows10的環境使用 先至 docker官方網站 下載 docker for windows 2.依照執行程式下載安裝 這邊我的電腦有遇到一些問題順便記錄下來, 在下載啟動docker時發生錯誤 Hardw...
-
<script type="text/javascript"> jQuery(document).ready(function(){ jQuery(window).scroll(function() { if(jQuery(windo...
-
將plugins\woocommerce\templates\cart\cart-item-data.php <dd class="variation-<?php echo sanitize_html_class( $data['key'...
-
$("input").keydown(function (event) { if (event.which == 13) { //do some thing... } });