racket plt是否具有与Python';s sha1.update()
我想使用racket对stdin进行分块散列,但找不到与Python的hashlib的sha1.update函数等效的函数。有没有等效的或替代的函数?看看的库,它通过为SHA-1和SHA-2的OpenSSL实现提供racket接口,为SHA-1和SHA-2添加了racket支持racket plt是否具有与Python';s sha1.update(),racket,sha,Racket,Sha,我想使用racket对stdin进行分块散列,但找不到与Python的hashlib的sha1.update函数等效的函数。有没有等效的或替代的函数?看看的库,它通过为SHA-1和SHA-2的OpenSSL实现提供racket接口,为SHA-1和SHA-2添加了racket支持 (require sha) (sha1 bstr) -> sha1? bstr : bytes? 尽管它没有update()过程,但正如Python自己的调用中所述,调用如下: m.update(a
(require sha)
(sha1 bstr) -> sha1?
bstr : bytes?
尽管它没有update()
过程,但正如Python自己的调用中所述,调用如下:
m.update(a); m.update(b)
(define c (make-digest-context 'sha1))
(define in (open-input-file "foo"))
(let loop ()
(define chunk (read-bytes 4096 in))
(cond [(eof-object? chunk) (final-context->hex-string c)]
[else (update-context c chunk)
(loop)]))
相当于:
m.update(a+b)
看看的库,它通过为SHA-1和SHA-2的OpenSSL实现提供一个Racket接口,为SHA-1和SHA-2添加了Racket支持
(require sha)
(sha1 bstr) -> sha1?
bstr : bytes?
尽管它没有update()
过程,但正如Python自己的调用中所述,调用如下:
m.update(a); m.update(b)
(define c (make-digest-context 'sha1))
(define in (open-input-file "foo"))
(let loop ()
(define chunk (read-bytes 4096 in))
(cond [(eof-object? chunk) (final-context->hex-string c)]
[else (update-context c chunk)
(loop)]))
相当于:
m.update(a+b)
以下是一种方法:
#lang racket
(require (planet soegaard/digest:1:2/digest))
(define a #"The quick brown fox jumps ")
(define b #"over the lazy dog")
(define a+b (bytes-append a b))
(digest a+b 'sha1)
(define c (make-digest-context 'sha1))
(update-context c a)
(update-context c b)
(final-context->hex-string c)
输出为:
"2fd4e1c67a2d28fced849ee1bb76e7391b93eb12"
"2fd4e1c67a2d28fced849ee1bb76e7391b93eb12"
您可以在这里找到摘要
集合中的文档:
可以这样使用它:
m.update(a); m.update(b)
(define c (make-digest-context 'sha1))
(define in (open-input-file "foo"))
(let loop ()
(define chunk (read-bytes 4096 in))
(cond [(eof-object? chunk) (final-context->hex-string c)]
[else (update-context c chunk)
(loop)]))
以下是一种方法:
#lang racket
(require (planet soegaard/digest:1:2/digest))
(define a #"The quick brown fox jumps ")
(define b #"over the lazy dog")
(define a+b (bytes-append a b))
(digest a+b 'sha1)
(define c (make-digest-context 'sha1))
(update-context c a)
(update-context c b)
(final-context->hex-string c)
输出为:
"2fd4e1c67a2d28fced849ee1bb76e7391b93eb12"
"2fd4e1c67a2d28fced849ee1bb76e7391b93eb12"
您可以在这里找到摘要
集合中的文档:
可以这样使用它:
m.update(a); m.update(b)
(define c (make-digest-context 'sha1))
(define in (open-input-file "foo"))
(let loop ()
(define chunk (read-bytes 4096 in))
(cond [(eof-object? chunk) (final-context->hex-string c)]
[else (update-context c chunk)
(loop)]))
这不需要我将以前读取的所有字节都保存在内存中吗?如果我正在读取一个千兆字节大小的文件,这将是不实际的,或者我误解了?不,上下文不存储输入字节。它使用很少的内部状态。请参阅添加的示例。这不需要我将以前读取的所有字节保留在内存中吗?如果我正在读取一个千兆字节大小的文件,这将是不实际的,或者我误解了?不,上下文不存储输入字节。它使用很少的内部状态。请参见添加的示例。