BouncyCastLe org.bouncycaSTLe.crypto.tls.TlsUtils
Có các phương pháp sau
protected static void checkVersion(InputStream inputstream, TlsProtocolHandler tlsprotocolhandler)
némIOException
{
int i = inputstream.read();
int j = inputstream.read();
nếu (i != 3 || j != 1)
{
tlsprotocolhandler.failWithError((short)2, (short)70);
}
}
protected static void checkVersion(byte abyte0[], TlsProtocolHandler tlsprotocolhandler)
némIOException
{
nếu (abyte0[0] != 3 || abyte0[1] != 1)
{
tlsprotocolhandler.failWithError((short)2, (short)70);
}
}
3 và 1 được kiểm tra ở đây là gì?
Đây là một ví dụ tuyệt vời về một điều xấu được gọi là "Số ma thuật" :-) Trích từ Đầu vàoStream.read()
javadoc:
Đọc byte dữ liệu tiếp theo từ luồng đầu vào. Byte giá trị được trả về dưới dạng int trong phạm vi từ 0 đến 255. Nếu không có byte nào vì đã đến cuối luồng, giá trị -1 sẽ được trả về.
这意味着 Tôi
Và j
là số phiên bản được đọc từ luồng. Chúng phải là phiên bản 3
và phiên bản 1
. thất bạiWithError
Phương pháp này cũng thu được Số ma thuật đã được thông qua. Trình xử lý giao thức Tls
Có hằng số cho chúng, tôi không biết tại sao tác giả không sử dụng chúng
2: AL_gây tử vong
70: AP_protocol_version
nguồn
Xem mã kiểm tra phiên bản
Trong giai đoạn bắt tay (Máy chủXin chào
) được gọi. Kiểm tra phiên bản giao thức tại đây. Xem chương phiên bản nàybài viết wikipediaTìm số phiên bản. Phiên bản chính 3, phiên bản phụ 1 Có TLS 1.0
.
Tôi là một lập trình viên xuất sắc, rất giỏi!