A. TLS/SSL數字證書里的指紋演算法、簽名演算法和簽名哈希演算法各是做什麼用的
你好!
簽名哈希算來法:簽名之自前對證書主體部分進行哈希的演算法,它和簽名演算法結合,是簽名及認證的一部分。
指紋演算法:是對簽名之後的證書文件計算一下散列值,只是用於檢測證書是否被篡改,類似於去網站下載一個安裝包,嚴謹一點的網站會給一個MD5的值,便於你下載之後再MD5一下核對。
證書指紋何時用到?舉個例子,在導入某CA根證書或證書鏈時,會去該CA官方網站下載相關證書,下載好了之後可以手工檢查一下指紋,確認無誤再導入。
B. 關於駕駛證指紋
如何強化對駕駛員培訓工作的管理,切實提高駕駛員培訓質量,減少「馬路殺手」,向社會輸送合格學員,已經成為擺在行業主管部門面前的一個重要課題。深圳指昂科技有限公司通過與交通行業主管部門的全面合作,成功研製了「指紋IC卡計時駕駛員培訓管理系統」項目。
該項目的實施,旨在通過技術手段全面提升駕駛員培訓管理的科學化,規范化和信息化水平,規范駕校的市場競爭行為和教練員的執教行為,確保學員能夠按照交通部門制定的教學計劃和教學大綱規定的學時要求,高質量完成培訓。
系統特點:
◆智能化的指紋評估和自適應指紋模板生成演算法,可根據指紋質量自動調整指紋模板生成法
◆基於指紋的驗證方式,保證了每條駕培信息的真實性、可靠性;
◆實時計時、計程,能自動區分場訓、道訓、日訓、夜訓;
◆ 提供對教練員的評價功能,以完善對教練員的管理;
◆採用手持式的結構設計,既有安裝使用方便的特點;
◆ 採用漢字液晶顯示和聲音提示,具有操作方便的特點;
◆採用獨特的電源設計,提高設備的抗電沖擊和抗干擾能力;
◆信息在設備、IC卡、計算機系統中均為雙備份設計。防止信息丟失;
◆根據管理需求,駕駛員培訓管理軟體可以在線升級。
系統概況:
駕駛員培訓指紋IC卡計時管理系統主要由車載式駕駛員培訓管理器、駕駛員駕培IC卡和配套的管理軟體組成,其根本出發點是採用指紋身份鑒別技術和IC卡技術,利用指紋驗證教練員和駕駛員的身份,通過在訓練過程中實時記錄訓練時間和訓練里程的方法,客觀記錄駕駛員的訓練信息,實現對駕駛員培訓的科學化、規范化、信息化管理。
系統組成及功能詳述: 駕駛員培訓指紋IC卡計時管理系統主要由車載式駕駛員培訓管理設備、理論駕駛員培訓管理設備、模擬器駕駛員培訓管理設備、IC卡制卡設備、駕駛員培訓IC卡和配套的管理軟體組成。
一、駕駛員培訓管理器
駕駛員培訓管理器安裝在培訓車輛上,和車輛相連,在車輛行駛過程中,可實時記錄車輛行駛的時間數據和里程數據。駕駛員培訓管理器具有以指紋方式驗證教練員和學員身份的功能,在學員訓練過程中實時記錄訓練時間和訓練里程信息,自動區分場地訓練、道路訓練、白天訓練和夜間訓練,可以將訓練數據保存到學員的IC卡中,並可查詢學員IC卡中的訓練信息,對參加培訓的學員進行管理。
1) 開機自檢功能
駕駛員培訓管理器具有自檢功能,開機後可自動檢查設備的主要部件運行是否正常,並以語音和顯示提示。
2) 系統自動恢復功能
駕駛員培訓管理器具有數據自動恢復功能,關閉或斷開設備電源後再次為設備加電時,設備會自動恢復到關閉前的運行狀態,所有信息均不會丟失
3) 教練員身份指紋驗證功能
駕駛員培訓管理器具有以指紋方式驗證教練員身份的功能。
4) 學員身份指紋驗證功能
駕駛員培訓管理器具有以指紋方式驗證學員身份的功能,杜絕訓練中和考試中的冒名頂替問題發生。
5) 實時記錄學員訓練時間和里程數據、自動區分訓練類型
駕駛員培訓管理器能在學員訓練過程中,實時記錄訓練時間和里程數據、自動區分場地訓練、道路訓練等訓練類型,並可將訓練信息保存到IC卡中。
6) 學員對教練員的滿意度評估功能
駕駛員培訓管理器提供學員對教練員滿意度評估功能,學員可以輸入對教練員的滿意度信息,設備會自動記錄該信息,並將滿意度信息保存到IC卡中。
7) 系統參數設置功能
駕駛員培訓管理器具有對K系數、日期、時間和驗證指紋的時間間隔進行設置的功能,允許有許可權的操作人員對上述的信息進行動態設置。
二、駕培應用IC卡
駕培應用IC卡分為:教練員IC卡、學員IC卡、管理員IC卡和考官IC卡四種類型。其中,使用管理員IC卡,可以對駕駛員培訓管理器中的參數進行設置,考官IC卡供交警部門的考官使用。
在教練員和學員IC卡中存儲有持卡人的編號、姓名、指紋信息(保存兩只手指的指紋數據)和訓練數據等信息。其中編號信息、姓名信息和指紋信息是在制卡時寫入的,訓練數據是在教練員或駕駛員訓練過程中由駕駛員培訓管理器實時寫入的。
在駕駛員IC卡中存儲的訓練數據不僅僅存儲訓練的累計時間和累計里程數據,還存儲每次訓練的明細信息。每條明細信息中包括每次訓練的日期、起始時間和中止時間、訓練類型、訓練時間和訓練里程等信息。使用駕駛員培訓管理軟體和制卡設備可以將學員IC卡中的信息採集到計算機中。
◆系統擴展:
駕駛員培訓指紋IC卡計時管理系統可完成對駕駛員培訓的管理,客觀記錄駕駛員的訓練信息,作為評定駕駛員訓練水平的依據。在駕駛員管理過程中,除培訓外,還包括駕駛員報名、駕駛員理論考試、駕駛員體檢、駕駛員考試和駕駛員日常管理等多個環節。駕駛員管理的法規也可能發生變化。因此,在指紋IC卡計時駕駛員培訓管理系統的設計中,充分考慮了系統的可伸縮性和擴展性。
同時,在硬體體系結構的設計上也考慮了硬體設備的擴展性。通過升級硬體設備中的嵌入式軟體,即可實現指紋IC卡計時駕駛員培訓管理系統的功能擴展。
C. ssl證書 指紋演算法 是什麼意思
網際網路的 超文本傳輸協議 (HTTP)使用 SSL 來實現安全的通信。 在客戶端與伺服器間傳輸的數據是通過使用對稱算專法(如 DES 或 RC4)進行加密的。公用密鑰演算法(通常為 RSA)是用來屬獲得加密密鑰交換和數字簽名的,此演算法使用伺服器的SSL數字證書...
D. java代碼怎麼獲取數字的證書那一串20位指紋
通過JAVA來讀取數字證書的方法獲取20位指紋:
CARead.java文件代碼:
public class CARead extends JPanel {
private String CA_Name;
private String CA_ItemData[][] = new String[9][2];
private String[] columnNames = { "證書欄位標記", "內容" };
public CARead(String CertName) {
CA_Name = CertName;
/* 三個Panel用來顯示證書內容 */
JTabbedPane tabbedPane = new JTabbedPane();
JPanel panelNormal = new JPanel();
tabbedPane.addTab("普通信息", panelNormal);
JPanel panelAll = new JPanel();
panelAll.setLayout(new BorderLayout());
tabbedPane.addTab("所有信息", panelAll);
JPanel panelBase64 = new JPanel();
panelBase64.setLayout(new BorderLayout());
tabbedPane.addTab("Base64編碼形式的信息", panelBase64);
/* 讀取證書常規信息 */
Read_Normal(panelNormal);
/* 讀取證書文件字元串表示內容 */
Read_Bin(panelAll);
/* 以Base64編碼形式讀取證書文件的信息 */
Read_Raw(panelBase64);
tabbedPane.setSelectedIndex(0);
setLayout(new GridLayout(1, 1));
add(tabbedPane);
}
private int Read_Normal(JPanel panel) {
String Field;
try {
CertificateFactory certificate_factory = CertificateFactory
.getInstance("X.509");
FileInputStream file_inputstream = new FileInputStream(CA_Name);
X509Certificate x509certificate = (X509Certificate) certificate_factory
.generateCertificate(file_inputstream);
Field = x509certificate.getType();
CA_ItemData[0][0] = "類型";
CA_ItemData[0][1] = Field;
Field = Integer.toString(x509certificate.getVersion());
CA_ItemData[1][0] = "版本";
CA_ItemData[1][1] = Field;
Field = x509certificate.getSubjectDN().getName();
CA_ItemData[2][0] = "標題";
CA_ItemData[2][1] = Field;
Field=x509certificate.getNotBefore().toString();//得到開始有效日期
CA_ItemData[3][0] = "開始有效日期";
CA_ItemData[3][1] = Field;
Field=x509certificate. getNotAfter().toString();//得到截止日期
CA_ItemData[4][0] = "截止日期";
CA_ItemData[4][1] = Field;
Field=x509certificate.getSerialNumber().toString(16);//得到序列號
CA_ItemData[5][0] = "序列號";
CA_ItemData[5][1] = Field;
Field=x509certificate.getIssuerDN().getName();//得到發行者名
CA_ItemData[6][0] = "發行者名";
CA_ItemData[6][1] = Field;
Field=x509certificate.getSigAlgName();//得到簽名演算法
CA_ItemData[7][0] = "簽名演算法";
CA_ItemData[7][1] = Field;
Field=x509certificate.getPublicKey().getAlgorithm();//得到公鑰演算法
CA_ItemData[8][0] = "公鑰演算法";
CA_ItemData[8][1] = Field;
//關閉輸入流對象
file_inputstream.close();
final JTable table = new JTable(CA_ItemData, columnNames);
TableColumn tc = null; //表格列控制
tc = table.getColumnModel().getColumn(1);//得到表頭
tc.setPreferredWidth(600);//設置寬度
panel.add(table);//增加到布局面板
} catch (Exception exception) {
exception.printStackTrace(); //異常捕獲、
return -1;
}
return 0;
}
//讀取二進制指紋文件
private int Read_Bin(JPanel panel) {
try {
FileInputStream file_inputstream = new FileInputStream(CA_Name);
DataInputStream data_inputstream = new DataInputStream(
file_inputstream);
CertificateFactory certificatefactory = CertificateFactory
.getInstance("X.509");
byte[] bytes = new byte[data_inputstream.available()];
data_inputstream.readFully(bytes);
ByteArrayInputStream s = new ByteArrayInputStream(bytes);
JEditorPane Cert_EditorPane;
Cert_EditorPane = new JEditorPane();
X509Certificate cert=null;
//遍歷得到所有的證書屬性
if (s.available() > 0)
{
cert = (X509Certificate) certificatefactory .generateCertificate(s);
Cert_EditorPane.setText(cert.toString());
}
Cert_EditorPane.disable();
JScrollPane edit_scroll = new JScrollPane(Cert_EditorPane);
panel.add(edit_scroll);
file_inputstream.close();
data_inputstream.close();
} catch (Exception exception) {
exception.printStackTrace();
return -1;
}
return 0;
}
private int Read_Raw(JPanel panel) {
try {
JEditorPane Cert_EditorPane = new JEditorPane();
StringBuffer strBuffer =new StringBuffer();
File inputFile = new File(CA_Name);
FileReader in = new FileReader(inputFile);
char[] buf = new char[2000];
int len = in.read(buf, 0, 2000);
for (int i = 1; i < len; i++) {
strBuffer.append(buf[i]);
}
in.close();
Cert_EditorPane.setText(strBuffer.toString());
Cert_EditorPane.disable();
JScrollPane edit_scroll = new JScrollPane(Cert_EditorPane);
panel.add(edit_scroll);
} catch (Exception exception) {
exception.printStackTrace();
return -1;
}
return 0;
}
}
E. 經典哈希演算法里的seed能換成別的數字嗎
證書簽名使用的演算法是發布者自己規定的 使用自己的私鑰對證書編碼的哈希值進行加密 一般演算法為md5withrsa或者sha256withrsa。哈希演算法是唯一的 就是把證書編碼轉換為固定長度的2進制 這個過程不可逆 就是說無法通過哈希值還原證書編碼。指紋演算法就是哈希演算法 一般都是sh1。證書認證的流程是證書所有者把證書和指紋(證書的哈希值並用私鑰加密)發給用戶 用戶根據證書計算出一個哈希值 用公鑰解密指紋得到一個哈希值 看一下兩者是否相同 相同及證明證書未被篡改。演算法是由所有者的私鑰加密的。ca的作用是ca是可以認證一個證書鏈,源頭就是ca 一旦你信任了這個ca 就是信任了ca發布的證書,這樣你與ca發布的證書的所有者通信時可以根據證書鏈找到ca ca可信任了則這個發布者就是可信任的
F. 加密技術的證書
證書實際是由證書簽證機關(CA)簽發的對用戶的公鑰的認證。
證書的內容包括:電子簽證機關的信息、公鑰用戶信息、公鑰、權威機構的簽字和有效期等等。目前,證書的格式和驗證方法普遍遵循X.509 國際標准。
加密:
我們將文字轉換成不能直接閱讀的形式(即密文)的過程稱為加密。
解密:
我們將密文轉換成能夠直接閱讀的文字(即明文)的過程稱為解密。
如何在電子文檔上實現簽名的目的呢?我們可以使用數字簽名。RSA公鑰體制可實現對數字信息的數字簽名,方法如下:
信息發送者用其私鑰對從所傳報文中提取出的特徵數據(或稱數字指紋)進行RSA演算法操作,以保證發信人無法抵賴曾發過該信息(即不可抵賴性),同時也確保信息報文在傳遞過程中未被篡改(即完整性)。當信息接收者收到報文後,就可以用發送者的公鑰對數字簽名進行驗證。
在數字簽名中有重要作用的數字指紋是通過一類特殊的散列函數(HASH函數) 生成的。對這些HASH函數的特殊要求是:
1.接受的輸入報文數據沒有長度限制;
2.對任何輸入報文數據生成固定長度的摘要(數字指紋)輸出;
3.從報文能方便地算出摘要;
4.難以對指定的摘要生成一個報文,而由該報文可以算出該指定的摘要;
5.難以生成兩個不同的報文具有相同的摘要。
驗證:
收方在收到信息後用如下的步驟驗證您的簽名:
1.使用自己的私鑰將信息轉為明文;
2.使用發信方的公鑰從數字簽名部分得到原摘要;
3.收方對您所發送的源信息進行hash運算,也產生一個摘要;
4.收方比較兩個摘要,如果兩者相同,則可以證明信息簽名者的身份。
如果兩摘要內容不符,會說明什麼原因呢?
可能對摘要進行簽名所用的私鑰不是簽名者的私鑰,這就表明信息的簽名者不可信;也可能收到的信息根本就不是簽名者發送的信息,信息在傳輸過程中已經遭到破壞或篡改。

G. 如何檢查數字證書的指紋 – SSL證書數字簽名網
證書的指紋( certificate』s thumbprint)是獨一無二的標識符。微軟Internet Explorer調用它按手印。瀏覽器傾向於以顯版示它,就好像它是一個部分權的證書。它不是一個證書的一部分,但它是從它計算。
指紋是DER編碼的證書信息,這是一個ASN.1類型的X.509規范的一部分指定為MD5摘要。
證書指紋是摘要(散列函數)的X509證書的二進制格式。它可以計算出不同的演算法,如SHA1為Microsoft Internet Explorer,Netscape Navigator為MD5。
要檢查證書的指紋和/或指紋,請執行以下步驟:
打開IE瀏覽器
轉到「工具」>「Internet選項」
單擊「內容」選項卡>「證書」
在「證書」窗口中,單擊您要檢查的證書(個人,其他人,中級證書頒發機構「,」受信任的根證書頒發機構「選項卡上的)
找到列表中的證書或根
雙擊進入
單擊「詳細信息」選項卡
滾動上按手印
詳細信息將顯示「指紋」
H. 如何獲取數字證書(x509Certificate)中的指紋演算法
創建X509證書方法較多,在Windows 環境下大致總結了幾中辦法,
1) 通過CA獲取證書,
2) 通過微軟提供的makecert 工具得到測試證書
3) 編程的方法創建,.Net提供了 X509Certificate2 類,該類可以用於創建證書,但只能從RawData中創建,創建後無法修改除FriendlyName以外的任何屬性。
我在互聯網上找了很久,始終沒有找到完全通過程序創建自定義的證書的方法。後來想了一個折中辦法,就是用程序調用 makecert.exe 先生成一個證書,證書的一些參數如Subject,有效期,序列號等可以通過參數傳入,然後把生成的證書文件讀到Rawdata中,得到X509Certificate2 類型的證書對象。當然這種方法確實比較笨,必須要依賴外部進程。等後面有時間的話,我還是想按照X509 V3 標准,自己創建RawData,然後生成證書,這樣應該是比較靈活的做法。不知道網友們有沒有什麼更好的方法來創建一個自定義的證書。
通過 makecert.exe 創建X509證書的代碼如下,供大家參考
static object semObj = new object();
/// <summary>
/// 自定義的證書信息
/// </summary>
public class T_CertInfo
{
public String FriendlyName;
public String Subject;
public DateTime BeginDate;
public DateTime EndDate;
public int SerialNumber;
}
/// <summary>
/// 生成X509證書
/// </summary>
/// <param name="makecrtPath">makecert進程的目錄</param>
/// <param name="crtPath">證書文件臨時目錄</param>
/// <param name="certInfo">證書信息</param>
/// <returns></returns>
public static X509Certificate2 CreateCertificate(String makecrtPath, String crtPath,
T_CertInfo certInfo)
{
Debug.Assert(certInfo != null);
Debug.Assert(certInfo.Subject != null);
string MakeCert = makecrtPath + "makecert.exe";
string fileName = crtPath + "cer";
string userName = Guid.NewGuid().ToString();
StringBuilder arguments = new StringBuilder();
arguments.AppendFormat("-r -n \"{0}\" -ss my -sr currentuser -sky exchange ",
certInfo.Subject);
if (certInfo.SerialNumber > 0)
{
arguments.AppendFormat("-# {0} ", certInfo.SerialNumber);
}
arguments.AppendFormat("-b {0} ", certInfo.BeginDate.ToString(@"MM\/dd\/yyyy"));
arguments.AppendFormat("-e {0} ", certInfo.EndDate.ToString(@"MM\/dd\/yyyy"));
arguments.AppendFormat("\"{0}\"", fileName);