1. 程式人生 > >SMTP驗證方式種類(LOGIN、PLAIN、CRAM-MD5)

SMTP驗證方式種類(LOGIN、PLAIN、CRAM-MD5)

其傳送使用者名稱與口令的格式應該是“<NULL>tim<NULL>tanstaaftanstaaf”。“tim”是使用者名稱,後邊的字串是口令,NULL是ASCII的0(所以無法使用telnet登入)。

CRAM-MD5方式
CRAM-MD5即是一種Keyed-MD5驗證方式,CRAM是“Challenge-Response Authentication Mechanism”的所寫。所謂Keyed-MD5,是將Clieng與Server共享的一個Key作為一部分MD5的輸入,正好郵件系統的使用者口令可以作為這個Key。具體的互動如下:

S: * OK IMAP4 Server
C: A0001 AUTHENTICATE CRAM-MD5
S: + PDE4OTYuNjk3MTcwOTUyQHBvc3RvZmZpY2UucmVzdG9uLm1jaS5uZXQ+ -------- Server傳送BASE64編碼的Timestamp、Hostname等給Client
C: dGltIGI5MTNhNjAyYzdlZGE3YTQ5NWI0ZTZlNzMzNGQzODkw ------- Client將收到的資訊加上使用者名稱和口令,編碼為BASE64傳送給Server
S: A0001 OK CRAM authentication successful ----------- Server使用該使用者的口令進行MD5運算,如果得到相同的輸出則認證成功

Keyed-MD5的計算公式為:
MD5 ( (tanstaaftanstaaf XOR opad),MD5((tanstaaftanstaaf XOR ipad), <
[email protected]
>) ),其中

MD5()為標準的MD5演算法,“tanstaaftanstaaf”為使用者口令,“<[email protected]>”是從Server傳送過來的Timestamp和Hostname等,ipad和opad為Keyed-MD5演算法特定的常數。上面的公式得出的digest為"b913a602c7eda7a495b4e6e7334d3890",加上使用者名稱,即"tim b913a602c7eda7a495b4e6e7334d3890"進行BASE64的編碼,得到上面傳送給Server的“dGltIGI5MTNhNjAyYzdlZGE3YTQ5NWI0ZTZlNzMzNGQzODkw”。

關於MD5和KeyedMD5的程式程式碼可以在各自的RFC中找到,在VC下需要改正幾個編譯錯誤。

MD5 RFC:

相關推薦

SMTP驗證方式種類LOGINPLAINCRAM-MD5

其傳送使用者名稱與口令的格式應該是“<NULL>tim<NULL>tanstaaftanstaaf”。“tim”是使用者名稱,後邊的字串是口令,NULL是ASCII的0(所以無法使用telnet登入)。CRAM-MD5方式 CRAM-MD5即是一種Keyed-MD5驗證方式,CRAM是

SMTP身份驗證LOGINPLAINCRAM-MD5

其傳送使用者名稱與口令的格式應該是“<NULL>tim<NULL>tanstaaftanstaaf”。“tim”是使用者名稱,後邊的字串是口令,NULL是ASCII的0(所以無法使用telnet登入)。CRAM-MD5方式 CRAM-MD5即是一種Keyed-MD5驗證方式,CRAM是

Spark中的三種分散式部署方式對比粗粒度模式細粒度模式

本文來自董的部落格,原文地址: http://dongxicheng.org/framework-on-yarn/apache-spark-comparing-three-deploying-ways/ 目前Apache Spark支援三種分散式部署方式,分別是standalone

HTTP multipart/form-data 上傳方式說明有8個註意點

ria ubi reference 就會 ros pda www tran cep ( From: http://home.meegoq.com/home-space-do-blog-uid-17-id-81.html ) HTTP multipart/form-data

js驗證身份證號碼省份 生日規範 避免無效資訊

var aCity={11:"北京",12:"天津",13:"河北",14:"山西",15:"內蒙古",21:"遼寧",22:"吉林",23:"黑龍江",31:"上海",32:"江蘇",33:"浙江",34:"安徽",35:"福建",36:"江西",37:"山東",41:"河南",42:"湖北",4

spring cloud 入門【Eureka註冊中心,微服務之間服務呼叫方式LoadBalancerClient 以及RestTemplate 進行服務呼叫

構建第二個微服務 menu 程式碼結構如下   MenuApplication 程式碼如下: package com.study.menu; import org.springframework.boot.SpringApplication; import org

系統間通訊方式ActiveMQ的叢集方案介紹結束十八

3、ActiveMQ熱備方案 ActiveMQ熱備方案,主要保證ActiveMQ的高可用性。這種方案並不像上節中我們主要討論的ActiveMQ高效能方案那樣,同時有多個節點都處於工作狀態,也就是說這種方案並不提高ActiveMQ叢集的效能;而是從叢集中的多個節點選擇一個,讓其處於工作狀態,叢集中其它節點

樹的三種遍歷方式原始碼遞迴與非遞迴

在面試的時候,我們會經常被問到樹的三種遍歷,也就是前序遍歷、中序遍歷和後序遍歷。 所謂前序遍歷,就是先訪問根節點,再左,再右。命名方式就是根據根節點是在哪訪問的去定義的。下面我們先用Java實現三種遍歷的遞迴,是非常的簡單。 樹的前序遍歷: public

《Java從入門到放棄》入門篇:Struts2的常用驗證方式

java struts action validate 數據驗證 前一回,我們講完了“直接在功能方法中寫驗證代碼”這種驗證方式,接下來,我們繼續搞定後續的三種方式。二、重寫validate方法(註意這個方法會驗證該類中所有的方法) 使用重寫驗證方法的好處就是,又可以少寫一句代碼了!!

Android中三種常用解析XML的方式DOMSAXPULL簡介及區別

字符串 lan win name屬性 Coding 空間 toc log fin XML在各種開發中都廣泛應用,Android也不例外。作為承載數據的一個重要角色,如何讀寫XML成為Android開發中一項重要的技能。今天就由我向大家介紹一下在Android平臺下幾種常見的

java 驗證手機號碼電話號碼包括最新的電信聯通和移動號碼

-s 轉義 電信號 auth input sim pem csharp class 一、目前的號碼段(2017-06-01更新) 二、代碼 package com.linbilin.test; import java.util.regex.Pattern;

Java基礎------生成一個六位數的驗證包含大寫字母小寫字母數字,並且不允許重復

參考 數組 rand 定義 ole ava length log post 問題描述:生成一個六位數的驗證碼(包含大寫字母、小寫字母、數字,並且不允許重復)? 參考代碼如下: import java.util.Arrays;import java.util.Random

springMVC怎麽接受前臺傳過來的多種類型參數?集合實體單個參數

pat con getc get gpo catalog pwd list集合 success 創建一個實體:裏面包含需要接受的多種類型的參數。如實體、list集合、單個參數。(因為springMVC無法同時接受這幾種參數,需要創建一個實體包含它們來接受) 如接收User(

獲取碼值種類型字符的ASCII和進制轉換系統包括正負數小數

獲取碼值 進制轉換 十進制小數負數轉二進制 java進制轉換 ASCII 獲取碼值和進制轉換程序由來: 本人發現計算機中的計算器木有將十進制小數轉二進制的功能,後來發現一些網站將十進制負數轉二進制只是求出整數的二進制,然後前面加“-”,這種表示不是真正的負數二進制。於是愛較真兒

TornadocookieXSRF用戶驗證

edi AD 構造 通過 dpf eth 客戶端瀏覽器 tor rec --------------------Cookie操作--------------------1、設置Cookie1、set_cookie(name,value,domain=None,expires

EXCHANGE客戶端訪問服務器CAS中的身份驗證方式

傳輸 郵箱服務器角色 找到 輸入 驗證 管理器 orm 虛擬 code 在部署完畢exchange後系統會自動建立IIS服務來響應相應的請求。客戶端訪問服務器(以下簡稱CAS)實質上是一臺IIS服務器,在服務器中部署一套名為“Default web site”的站點來完成O

Ueditor設置默認字體字號行間距,添加字體種類

als case 簡介 一個 r.js man document line 如果 Ueditor默認字體、字號、行間距的修改: ueditor默認字號是16號,默認字體為sans-serif,默認行間距為5px,如下圖所示: 首先,修改ueditor.all.js文件中如

easy-ui表單字段單字段---》驗證---》整數小數 %同時需要

put clas -o urn datebox easy from data rule // 單字段---》驗證---》整數、小數 、%(同時需要) <script> //保底值 $.extend($.fn.validatebox.defaults.

用動畫的方式畫出任意的路徑直線曲線折現

pub length 資料 new object n) 整體 for duration 原文:用動畫的方式畫出任意的路徑(直線、曲線、折現) 版權聲明:本作品采用知識共享署名-非商業性使用-相同方式共享 4.0 國際許可協議進行許可。歡迎轉載

[iOS]iOS8可用的識別使用者方式IDFAUUIDIDFV

本文地址:http://blog.csdn.net/zhaoyabei/article/details/46682765 轉載註明出處 想要追蹤、統計使用者,自然離不開使用者唯一識別符號,這是每個公司都面臨的問題。在歷史上唯一識別符號很多,如UDID、MAC