本文簡要介紹ruby語言中 Digest::Base類
的用法。
這個抽象類為用 C 編寫的消息摘要實現類提供了一個通用接口。
用 C 寫一個 Digest
子類
Digest::Base
為用 C 編寫的消息摘要類提供通用接口。這些類必須提供類型為 rb_digest_metadata_t 的結構:
typedef int (*rb_digest_hash_init_func_t)(void *); typedef void (*rb_digest_hash_update_func_t)(void *, unsigned char *, size_t); typedef int (*rb_digest_hash_finish_func_t)(void *, unsigned char *); typedef struct { int api_version; size_t digest_len; size_t block_len; size_t ctx_size; rb_digest_hash_init_func_t init_func; rb_digest_hash_update_func_t update_func; rb_digest_hash_finish_func_t finish_func; } rb_digest_metadata_t;
此結構必須設置為名為metadata
的實例變量(名稱前不帶+@+)。舉例:
static const rb_digest_metadata_t sha1 = { RUBY_DIGEST_API_VERSION, SHA1_DIGEST_LENGTH, SHA1_BLOCK_LENGTH, sizeof(SHA1_CTX), (rb_digest_hash_init_func_t)SHA1_Init, (rb_digest_hash_update_func_t)SHA1_Update, (rb_digest_hash_finish_func_t)SHA1_Finish, }; rb_ivar_set(cDigest_SHA1, rb_intern("metadata"), Data_Wrap_Struct(0, 0, 0, (void *)&sha1));
相關用法
- Ruby Base64.encode64用法及代碼示例
- Ruby Base64.decode64用法及代碼示例
- Ruby Base64模塊用法及代碼示例
- Ruby BasicSocket.send用法及代碼示例
- Ruby BasicObject.equal?用法及代碼示例
- Ruby BasicSocket.remote_address用法及代碼示例
- Ruby BasicSocket.recv用法及代碼示例
- Ruby BasicObject.instance_eval用法及代碼示例
- Ruby BasicSocket.do_not_reverse_lookup用法及代碼示例
- Ruby BasicObject.obj ==用法及代碼示例
- Ruby BasicSocket.do_not_reverse_lookup =用法及代碼示例
- Ruby BasicSocket.connect_address用法及代碼示例
- Ruby BasicObject.method_missing用法及代碼示例
- Ruby BasicSocket.recv_nonblock用法及代碼示例
- Ruby BasicSocket.recvmsg用法及代碼示例
- Ruby BasicSocket.getsockopt用法及代碼示例
- Ruby BasicObject.singleton_method_undefined用法及代碼示例
- Ruby BasicObject.send用法及代碼示例
- Ruby BasicSocket.getpeereid用法及代碼示例
- Ruby BasicSocket.local_address用法及代碼示例
- Ruby BasicSocket.shutdown用法及代碼示例
- Ruby BasicObject類用法及代碼示例
- Ruby BasicObject.instance_exec用法及代碼示例
- Ruby BasicSocket.close_read用法及代碼示例
- Ruby BasicSocket.getpeername用法及代碼示例
注:本文由純淨天空篩選整理自ruby-lang.org大神的英文原創作品 Base類。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。