iOSハッシュ(HASH)アルゴリズム
6673 ワード
よく使われる暗号化アルゴリズムの文章をまとめた.
ECB電子コードブック(Electronic Codebook Book(ECB))
1つのデータを複数のブロックに分割し、独立して暗号化します.
パスワードパケットリンクモード(Cipher Block Chaining(CBC))
まず、明文をいくつかのセグメントに分割し、各セグメントを初期ブロックまたは前のセグメントの暗号セグメントと排他的または演算した後、鍵およびベクトルと暗号化します.この方法は暗号文の完全性を保証することができて、もし1つのデータが変化するならば、後のすべてのデータは破壊されます!
パスワード暗号化ユーザーログイン時のパスワード検証.2つの原則:1.ネットワーク上でユーザの明文プライバシーデータを伝送することは許されない.ユーザの明文プライバシーデータをローカルに保存することは許されない .情報要約、情報「指紋」は、データ識別(ファイル改ざん防止)のための である.検索、キーワード識別 著作権表示 文字列MD 5値 ファイルMD 5値
iOSは、システムMD 5が提供する方法を使用する前に、ヘッダファイル
Swiftコード:
文字列HSA 1値 ファイルSHA 1値
SHA 1ハッシュコード,OC:
ハッシュ関数計算は、上記の計算方法やコードのほか、ファイルをハッシュ計算してデータ指紋を生成することもできます.あるいは秘密保持の要求が高い場合、塩処理、HMACハッシュ計算などを行います!
パッケージコードコレクション
1、常用暗号化アルゴリズム
1.1ハッシュ関数
- MD5
- SHA1
- SHA256/512
特長
-
- ,
- ,
MD5: 32
SHA1: 40
SHA256: 64
SHA512: 128
-
1.2対称暗号化アルゴリズム
- DES( )
- 3DES
- AES( , ,iOS ( ))
1.3非対称暗号化アルゴリズム
- RSA
1.4 ECB&CBC
1つのデータを複数のブロックに分割し、独立して暗号化します.
まず、明文をいくつかのセグメントに分割し、各セグメントを初期ブロックまたは前のセグメントの暗号セグメントと排他的または演算した後、鍵およびベクトルと暗号化します.この方法は暗号文の完全性を保証することができて、もし1つのデータが変化するならば、後のすべてのデータは破壊されます!
2、MD5
2.1用途
2.2端末によるMD 5値の表示
echo -n | openssl md5
md5 -s
-n
パラメータが必要で、-n
はリターン記号を入力しないことを示し、正しい結果を得ることができます.md5 file.dat( )
2.3 MD 5ハッシュ計算コード
iOSは、システムMD 5が提供する方法を使用する前に、ヘッダファイル
#import
OCコードをインポートする必要がある.#pragma mark -
- (NSString *)md5String {
const char *str = self.UTF8String;
uint8_t buffer[CC_MD5_DIGEST_LENGTH];
CC_MD5(str, (CC_LONG)strlen(str), buffer);
return [self stringFromBytes:buffer length:CC_MD5_DIGEST_LENGTH];
}
- (NSString *)stringFromBytes:(uint8_t *)bytes length:(int)length {
NSMutableString *strM = [NSMutableString string];
for (int i = 0; i < length; i++) {
[strM appendFormat:@"%02x", bytes[i]];
}
return [strM copy];
}
Swiftコード:
extension String {
/// MD5
func getMd5() -> String {
let str = self.cString(using: String.Encoding.utf8)
let strLen = CUnsignedInt(self.lengthOfBytes(using: String.Encoding.utf8))
let digestLen = Int(CC_MD5_DIGEST_LENGTH)
let result = UnsafeMutablePointer.allocate(capacity: digestLen)
CC_MD5(str!, strLen, result)
let hash = NSMutableString()
for i in 0.."%02x", result[i])
}
result.deallocate(capacity: digestLen)
return String(hash)
}
/// MD5
var md5: String! {
return self.getMd5()
}
}
3、SHA1 / SHA256 / SHA512
3.1端末SHA関数ハッシュ値の表示
echo -n "string" | openssl sha -sha1
echo -n "string" | openssl sha -sha256
echo -n "string" | openssl sha -sha512
openssl sha -sha1 file.dat( )
openssl sha -sha256 file.dat
openssl sha -sha512 file.dat
3.2 SHA関数ハッシュ計算コード
SHA 1ハッシュコード,OC:
- (NSString *)sha1String {
const char *str = self.UTF8String;
// , SHA1、SHA256、SHA512
// uint8_t buffer[CC_SHA256_DIGEST_LENGTH];
// CC_SHA256(str, (CC_LONG)strlen(str), buffer);
uint8_t buffer[CC_SHA1_DIGEST_LENGTH];
CC_SHA1(str, (CC_LONG)strlen(str), buffer);
return [self stringFromBytes:buffer length:CC_SHA1_DIGEST_LENGTH];
}
- (NSString *)stringFromBytes:(uint8_t *)bytes length:(int)length {
NSMutableString *strM = [NSMutableString string];
for (int i = 0; i < length; i++) {
[strM appendFormat:@"%02x", bytes[i]];
}
return [strM copy];
}
4、ハッシュ関数のまとめ
ハッシュ関数計算は、上記の計算方法やコードのほか、ファイルをハッシュ計算してデータ指紋を生成することもできます.あるいは秘密保持の要求が高い場合、塩処理、HMACハッシュ計算などを行います!
パッケージコードコレクション