本文簡要介紹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類。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。
