Google Authenticator 產生金鑰、驗證範例| 仙草奶綠的程式 ...

文章推薦指數: 80 %
投票人數:10人

透過Google的Google Authenticator SDK 由代碼產生金鑰. 2. 產生的驗證碼可以進行驗證. ※用途於登入時進行One Time Password (OTP),等等. C#學習筆記 應用所需 1.VisualStudio2019-範例專案WindowsForm(.netFramework) 目的: 1.透過Google的GoogleAuthenticatorSDK由代碼產生金鑰 2.產生的驗證碼可以進行驗證 ※用途於登入時進行OneTimePassword(OTP),等等 範例檔案: https://github.com/gotoa1234/GoogleAuthenticatorExample.git 本篇分為三部分: 一、 說明Google Authenticator是什麼、用途 二、 使用GoogleSDK於代碼中產生金鑰 三、 安裝的APP(Google Authenticator)產生的驗證碼與代碼產生的一致   一、說明Google Authenticator是什麼、用途 Step1:GoogleAuthenticator是Google的OTP驗證器,可以用手機於GooglePlay商店下載 Step2:安裝完成後,如果有加入金鑰約每隔30秒會產生一次新的OTP驗證碼 Step3:加入金鑰的方式可以用"手動輸入"或"掃描QRCode" Step4:典型使用情況,說明出處:Wiki         重點:開發者的網站需要提供用戶一組金鑰,此金鑰開發者也必須記錄,未來用戶登入時驗證兩邊的驗證碼是否一致   二、使用GoogleSDK於代碼中產生金鑰 Step1:開啟VisualStudio建立一個新專案(這邊使用WindowsForm作為範例) ->加入參考 Step2:輸入google.Authenticator ->安裝 Step3:引用GoogleSDK usingGoogle.Authenticator;   Step4-1:產生QRCode與加密金鑰的代碼 其中TwoFactorAuthenticatorClass是GoogleSDK的物件 1.Account是自己設定,會影響產生的手動金鑰ManualEntryKey與QRCode 2.SecretKey是自己設定,會影響產生的手動金鑰ManualEntryKey與QRCode 3.ManualEntryKey由上面兩個參數產生 ///

///產生QRCode與加密金鑰 /// publicvoidCreateSecretKeyAndQrCode() { TwoFactorAuthenticatortfA=newTwoFactorAuthenticator(); varsetupCode=tfA.GenerateSetupCode(textBox_account.Text,textBox_account.Text,textBox_SecretKey.Text,false,3); //1.QRCode圖片從記憶體轉到畫面上 using(MemoryStreamms=newMemoryStream(Convert.FromBase64String(setupCode.QrCodeSetupImageUrl.Replace("data:image/png;base64,","")))) pictureBox_QRCode.Image=Image.FromStream(ms); //2.產生的金鑰與資訊 this.textBox_Message.Text= "結合密鑰的文字Account:"+textBox_account.Text+System.Environment.NewLine+ "自已加密的密鑰SecretKey:"+textBox_SecretKey.Text+System.Environment.NewLine+ "手動輸入的密鑰EncodedKey:"+setupCode.ManualEntryKey; }   Step4-2:產生QRCode與加密金鑰的代碼畫面上的執行結果 Step5-1:以下為產生驗證碼的代碼 1.最後產生的驗證碼在resultList中,驗證碼會有多筆,任何一筆都可以驗證成功 /// ///產生Secret當前的驗證碼 /// publicListGeneratorCurrentCode() { varresultArray=newTwoFactorAuthenticator().GetCurrentPINs(textBox_SecretKey.Text); varresultList=newList(resultArray); returnresultList; } Step5-2:以下為產生驗證碼的代碼的執行結果 Step6:驗證碼是否合法的代碼 /// ///驗證碼是否正確 /// /// publicstringValidateGoogleAuthCode() { varisRight=false; TwoFactorAuthenticatortfA=newTwoFactorAuthenticator(); isRight=tfA.ValidateTwoFactorPIN(textBox_SecretKey.Text,textBox_ValidateCode.Text); returnisRight?"驗證正確":"錯誤"; } Step6-2:驗證碼是否合法的代碼執行結果 Step7:代碼下載   三、安裝的APP(Google Authenticator)產生的驗證碼與代碼產生的一致 Step1:拿出手機與程式上的比對,可以發現SecretKey相同時產生的金鑰會一致,而且每隔30秒會替換新的驗證碼   .NetC# 回首頁 本頁段落 本篇分為三部分:



請為這篇文章評分?