-
Notifications
You must be signed in to change notification settings - Fork 379
/
hashlib.po
1294 lines (1126 loc) · 51.2 KB
/
hashlib.po
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
# Copyright (C) 2001-2020, Python Software Foundation
# This file is distributed under the same license as the Python package.
# Maintained by the python-doc-es workteam.
# docs-es@python.org /
# https://mail.python.org/mailman3/lists/docs-es.python.org/
# Check https://github.com/python/python-docs-es/blob/3.8/TRANSLATORS to get
# the list of volunteers
#
msgid ""
msgstr ""
"Project-Id-Version: Python 3.8\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-10-12 19:43+0200\n"
"PO-Revision-Date: 2023-02-10 12:24-0300\n"
"Last-Translator: Francisco Mora <fr.morac@duocuc.cl>\n"
"Language: es\n"
"Language-Team: python-doc-es\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: Babel 2.13.0\n"
#: ../Doc/library/hashlib.rst:2
msgid ":mod:`hashlib` --- Secure hashes and message digests"
msgstr ":mod:`hashlib` --- Hashes seguros y resúmenes de mensajes"
#: ../Doc/library/hashlib.rst:10
msgid "**Source code:** :source:`Lib/hashlib.py`"
msgstr "**Código fuente:** :source:`Lib/hashlib.py`"
#: ../Doc/library/hashlib.rst:23
#, fuzzy
msgid ""
"This module implements a common interface to many different secure hash and "
"message digest algorithms. Included are the FIPS secure hash algorithms "
"SHA1, SHA224, SHA256, SHA384, SHA512, (defined in `the FIPS 180-4 "
"standard`_), the SHA-3 series (defined in `the FIPS 202 standard`_) as well "
"as RSA's MD5 algorithm (defined in internet :rfc:`1321`). The terms "
"\"secure hash\" and \"message digest\" are interchangeable. Older "
"algorithms were called message digests. The modern term is secure hash."
msgstr ""
"Este módulo implementa una interfaz común a diferentes algoritmos de hash "
"seguro y resúmenes de mensajes. Están incluidos los algoritmos de hash "
"seguro FIPS SHA1, SHA224, SHA256, SHA384 y SHA512 (definidos en FIPS 180-2) "
"además del algoritmo MD5 de RSA (definido en Internet :rfc:`1321`). Los "
"términos \"hash seguro\" y \"resumen de mensaje\" son intercambiables. Los "
"algoritmos más antiguos eran denominados resúmenes de mensajes. El término "
"moderno es hash seguro."
#: ../Doc/library/hashlib.rst:33
msgid ""
"If you want the adler32 or crc32 hash functions, they are available in the :"
"mod:`zlib` module."
msgstr ""
"Si quieres las funciones de hash adler32 o crc32, están disponibles en el "
"módulo :mod:`zlib`."
#: ../Doc/library/hashlib.rst:40
msgid "Hash algorithms"
msgstr "Algoritmos de hash"
#: ../Doc/library/hashlib.rst:42
#, fuzzy
msgid ""
"There is one constructor method named for each type of :dfn:`hash`. All "
"return a hash object with the same simple interface. For example: use :func:"
"`sha256` to create a SHA-256 hash object. You can now feed this object with :"
"term:`bytes-like objects <bytes-like object>` (normally :class:`bytes`) "
"using the :meth:`update<hash.update>` method. At any point you can ask it "
"for the :dfn:`digest` of the concatenation of the data fed to it so far "
"using the :meth:`digest()<hash.digest>` or :meth:`hexdigest()<hash."
"hexdigest>` methods."
msgstr ""
"Hay un método constructor nombrado para cada tipo de :dfn:`hash`. Todos "
"retornan un objeto de hash con la misma interfaz simple. Por ejemplo, usa :"
"func:`sha256` para crear un objeto de hash SHA-256. Ahora puedes alimentar "
"este objeto con :term:`objetos como bytes <bytes-like object>` (normalmente :"
"class:`bytes`) usando el método :meth:`update`. En cualquier punto puedes "
"pedir el resumen (:dfn:`digest`) de la concatenación de los datos "
"alimentados al mismo usando los métodos :meth:`digest` o :meth:`hexdigest`."
#: ../Doc/library/hashlib.rst:50
msgid ""
"To allow multithreading, the Python :term:`GIL` is released while computing "
"a hash supplied more than 2047 bytes of data at once in its constructor or :"
"meth:`.update<hash.update>` method."
msgstr ""
#: ../Doc/library/hashlib.rst:57
#, fuzzy
msgid ""
"Constructors for hash algorithms that are always present in this module are :"
"func:`sha1`, :func:`sha224`, :func:`sha256`, :func:`sha384`, :func:"
"`sha512`, :func:`sha3_224`, :func:`sha3_256`, :func:`sha3_384`, :func:"
"`sha3_512`, :func:`shake_128`, :func:`shake_256`, :func:`blake2b`, and :func:"
"`blake2s`. :func:`md5` is normally available as well, though it may be "
"missing or blocked if you are using a rare \"FIPS compliant\" build of "
"Python. These correspond to :data:`algorithms_guaranteed`."
msgstr ""
"Los constructores para algoritmos hash que siempre están presentes en este "
"módulo son :func:`sha1`, :func:`sha224`, :func:`sha256`, :func:`sha384`, :"
"func:`sha512`, :func:`blake2b` y :func:`blake2s`. :func:`md5` normalmente "
"también está disponible, aunque puede faltar o estar bloqueado si está "
"utilizando una rara compilación de Python \"compatible con FIPS \". También "
"pueden estar disponibles algoritmos adicionales dependiendo de la biblioteca "
"OpenSSL que Python use en su plataforma. En la mayoría de las plataformas "
"también están disponibles :func:`sha3_224`, :func:`sha3_256`, :func:"
"`sha3_384`, :func:`sha3_512`, :func:`shake_128`, :func:`shake_256`."
#: ../Doc/library/hashlib.rst:65
msgid ""
"Additional algorithms may also be available if your Python distribution's :"
"mod:`hashlib` was linked against a build of OpenSSL that provides others. "
"Others *are not guaranteed available* on all installations and will only be "
"accessible by name via :func:`new`. See :data:`algorithms_available`."
msgstr ""
#: ../Doc/library/hashlib.rst:72
#, fuzzy
msgid ""
"Some algorithms have known hash collision weaknesses (including MD5 and "
"SHA1). Refer to `Attacks on cryptographic hash algorithms`_ and the `hashlib-"
"seealso`_ section at the end of this document."
msgstr ""
"Algunos algoritmos tienen conocidas debilidades de colisión de hash, "
"consulte la sección \"Ver también\" al final."
#: ../Doc/library/hashlib.rst:76
#, fuzzy
msgid ""
"SHA3 (Keccak) and SHAKE constructors :func:`sha3_224`, :func:`sha3_256`, :"
"func:`sha3_384`, :func:`sha3_512`, :func:`shake_128`, :func:`shake_256` were "
"added."
msgstr ""
"Constructores SHA3 (Keccak) y SHAKE :func:`sha3_224`, :func:`sha3_256`, :"
"func:`sha3_384`, :func:`sha3_512`, :func:`shake_128`, :func:`shake_256`."
#: ../Doc/library/hashlib.rst:81
msgid ":func:`blake2b` and :func:`blake2s` were added."
msgstr "Fueron añadidas :func:`blake2b` y :func:`blake2s`."
#: ../Doc/library/hashlib.rst:86
msgid ""
"All hashlib constructors take a keyword-only argument *usedforsecurity* with "
"default value ``True``. A false value allows the use of insecure and blocked "
"hashing algorithms in restricted environments. ``False`` indicates that the "
"hashing algorithm is not used in a security context, e.g. as a non-"
"cryptographic one-way compression function."
msgstr ""
"Todos los constructores hashlib toman un argumento de solo palabra clave "
"*usedforsecurity* con el valor predeterminado ``True``. Un valor falso "
"permite el uso de algoritmos hash inseguros y bloqueados en entornos "
"restringidos. ``False`` indica que el algoritmo hash no se utiliza en un "
"contexto de seguridad, por ejemplo, como una función de compresión "
"unidireccional no criptográfica."
#: ../Doc/library/hashlib.rst:93
#, fuzzy
msgid "Hashlib now uses SHA3 and SHAKE from OpenSSL if it provides it."
msgstr "Hashlib ahora usa SHA3 y SHAKE de OpenSSL 1.1.1 y posteriores."
#: ../Doc/library/hashlib.rst:96
msgid ""
"For any of the MD5, SHA1, SHA2, or SHA3 algorithms that the linked OpenSSL "
"does not provide we fall back to a verified implementation from the `HACL\\* "
"project`_."
msgstr ""
#: ../Doc/library/hashlib.rst:102
msgid "Usage"
msgstr ""
#: ../Doc/library/hashlib.rst:104
#, fuzzy
msgid ""
"To obtain the digest of the byte string ``b\"Nobody inspects the spammish "
"repetition\"``::"
msgstr ""
"Por ejemplo, para obtener el resumen de la cadena de bytes ``b'Nobody "
"inspects the spammish repetition'``::"
#: ../Doc/library/hashlib.rst:116
msgid "More condensed:"
msgstr "Más resumido:"
#: ../Doc/library/hashlib.rst:122
#, fuzzy
msgid "Constructors"
msgstr "Constantes"
#: ../Doc/library/hashlib.rst:126
#, fuzzy
msgid ""
"Is a generic constructor that takes the string *name* of the desired "
"algorithm as its first parameter. It also exists to allow access to the "
"above listed hashes as well as any other algorithms that your OpenSSL "
"library may offer."
msgstr ""
"Es un constructor genérico que toma la cadena *name* del algoritmo deseado "
"como su primer parámetro. También existe para permitir acceso a los hashes "
"arriba listados así como cualquiera de los otros algoritmos que tu "
"biblioteca OpenSSL puede ofrecer. Los constructores nombrados son mucho más "
"rápidos que :func:`new` y deberían preferirse."
#: ../Doc/library/hashlib.rst:131
#, fuzzy
msgid "Using :func:`new` with an algorithm name:"
msgstr "Usando :func:`new` con un algoritmo provisto por OpenSSL:"
#: ../Doc/library/hashlib.rst:150
msgid ""
"Named constructors such as these are faster than passing an algorithm name "
"to :func:`new`."
msgstr ""
#: ../Doc/library/hashlib.rst:154
msgid "Attributes"
msgstr ""
#: ../Doc/library/hashlib.rst:156
#, fuzzy
msgid "Hashlib provides the following constant module attributes:"
msgstr "Hashlib provee los siguientes atributos constantes:"
#: ../Doc/library/hashlib.rst:160
msgid ""
"A set containing the names of the hash algorithms guaranteed to be supported "
"by this module on all platforms. Note that 'md5' is in this list despite "
"some upstream vendors offering an odd \"FIPS compliant\" Python build that "
"excludes it."
msgstr ""
"Un conjunto que contiene los nombres de los algoritmos garantizados a ser "
"soportados por este módulo en todas las plataformas. Ten en cuenta que 'md5' "
"se encuentra en esta lista a pesar de que algunos proveedores ofrecen una "
"extraña construcción Python \"compatible con FIPS\" que la excluye."
#: ../Doc/library/hashlib.rst:169
msgid ""
"A set containing the names of the hash algorithms that are available in the "
"running Python interpreter. These names will be recognized when passed to :"
"func:`new`. :attr:`algorithms_guaranteed` will always be a subset. The "
"same algorithm may appear multiple times in this set under different names "
"(thanks to OpenSSL)."
msgstr ""
"Un conjunto que contiene los nombres de los algoritmos de hash que están "
"disponibles en el intérprete de Python en ejecución. Estos nombres serán "
"reconocidos cuando sean pasados a :func:`new`. :attr:`algorithms_guaranteed` "
"siempre será un subconjunto. El mismo algoritmo puede aparecer múltiples "
"veces en este conjunto bajo diferentes nombres (gracias a OpenSSL)."
#: ../Doc/library/hashlib.rst:178
#, fuzzy
msgid "Hash Objects"
msgstr "Creando objetos hash"
#: ../Doc/library/hashlib.rst:180
msgid ""
"The following values are provided as constant attributes of the hash objects "
"returned by the constructors:"
msgstr ""
"Los siguientes valores son provistos como atributos constantes de los "
"objetos hash retornados por los constructores:"
#: ../Doc/library/hashlib.rst:185
msgid "The size of the resulting hash in bytes."
msgstr "El tamaño del hash resultante en bytes."
#: ../Doc/library/hashlib.rst:189
msgid "The internal block size of the hash algorithm in bytes."
msgstr "El tamaño del bloque interno del algoritmo de hash en bytes."
#: ../Doc/library/hashlib.rst:191
msgid "A hash object has the following attributes:"
msgstr "Un objeto hash tiene los siguientes atributos:"
#: ../Doc/library/hashlib.rst:195
msgid ""
"The canonical name of this hash, always lowercase and always suitable as a "
"parameter to :func:`new` to create another hash of this type."
msgstr ""
"El nombre canónico de este hash, siempre en minúsculas y siempre adecuado "
"como un parámetro a :func:`new` para crear otro hash de este tipo."
#: ../Doc/library/hashlib.rst:198
msgid ""
"The name attribute has been present in CPython since its inception, but "
"until Python 3.4 was not formally specified, so may not exist on some "
"platforms."
msgstr ""
"El atributo *name* ha estado presente en CPython desde su inicio, pero desde "
"Python 3.4 no fue especificado formalmente, por lo que puede no existir en "
"algunas plataformas."
#: ../Doc/library/hashlib.rst:203
msgid "A hash object has the following methods:"
msgstr "Un objeto hash tiene los siguientes métodos:"
#: ../Doc/library/hashlib.rst:208
msgid ""
"Update the hash object with the :term:`bytes-like object`. Repeated calls "
"are equivalent to a single call with the concatenation of all the arguments: "
"``m.update(a); m.update(b)`` is equivalent to ``m.update(a+b)``."
msgstr ""
"Actualiza el objeto de hash con el :term:`bytes-like object`. Invocaciones "
"repetidas son equivalentes a una única invocación con la concatenación de "
"todos los argumentos: ``m.update(a); m.update(b)`` es equivalente a ``m."
"update(a+b)``."
#: ../Doc/library/hashlib.rst:216
msgid ""
"Return the digest of the data passed to the :meth:`update` method so far. "
"This is a bytes object of size :attr:`digest_size` which may contain bytes "
"in the whole range from 0 to 255."
msgstr ""
"Retorna el resumen de los datos pasados al método :meth:`update` hasta el "
"momento. Este es un objeto de bytes de tamaño :attr:`digest_size` el cual "
"puede contener bytes en el rango completo desde 0 a 255."
#: ../Doc/library/hashlib.rst:223
msgid ""
"Like :meth:`digest` except the digest is returned as a string object of "
"double length, containing only hexadecimal digits. This may be used to "
"exchange the value safely in email or other non-binary environments."
msgstr ""
"Como :meth:`digest` excepto que el resumen es retornado como un objeto de "
"cadena del doble de largo, conteniendo sólo dígitos hexadecimales. Este "
"puede ser usado para intercambiar el valor de forma segura en correos "
"electrónicos u otros entornos no binarios."
#: ../Doc/library/hashlib.rst:230
msgid ""
"Return a copy (\"clone\") of the hash object. This can be used to "
"efficiently compute the digests of data sharing a common initial substring."
msgstr ""
"Retorna una copia (\"clon\") del objeto hash. Este puede ser usado para "
"calcular eficientemente los resúmenes de datos compartiendo una subcadena "
"inicial común."
#: ../Doc/library/hashlib.rst:235
msgid "SHAKE variable length digests"
msgstr "Resúmenes SHAKE de largo variable"
#: ../Doc/library/hashlib.rst:240
msgid ""
"The :func:`shake_128` and :func:`shake_256` algorithms provide variable "
"length digests with length_in_bits//2 up to 128 or 256 bits of security. As "
"such, their digest methods require a length. Maximum length is not limited "
"by the SHAKE algorithm."
msgstr ""
"Los algoritmos :func:`shake_128` y :func:`shake_256` proveen resúmenes de "
"largo variable con largo_en_bits//2 hasta 128 ó 256 bits de seguridad. Como "
"tales, sus métodos de resumen requieren un largo. El largo máximo no está "
"limitado por el algoritmo SHAKE."
#: ../Doc/library/hashlib.rst:247
#, fuzzy
msgid ""
"Return the digest of the data passed to the :meth:`~hash.update` method so "
"far. This is a bytes object of size *length* which may contain bytes in the "
"whole range from 0 to 255."
msgstr ""
"Retorna el resumen de los datos pasados al método :meth:`update` hasta el "
"momento. Este es un objeto de bytes de tamaño *length* el cual puede "
"contener bytes en el rango completo desde 0 a 255."
#: ../Doc/library/hashlib.rst:254
#, fuzzy
msgid ""
"Like :meth:`digest` except the digest is returned as a string object of "
"double length, containing only hexadecimal digits. This may be used to "
"exchange the value in email or other non-binary environments."
msgstr ""
"Como :meth:`digest` excepto que el resumen es retornado como un objeto de "
"cadena del doble de largo, conteniendo sólo dígitos hexadecimales. Este "
"puede ser usado para intercambiar el valor de forma segura en correos "
"electrónicos u otros entornos no binarios."
#: ../Doc/library/hashlib.rst:258
#, fuzzy
msgid "Example use:"
msgstr "Ejemplos"
#: ../Doc/library/hashlib.rst:265
msgid "File hashing"
msgstr "Cifrado de archivos"
#: ../Doc/library/hashlib.rst:267
msgid ""
"The hashlib module provides a helper function for efficient hashing of a "
"file or file-like object."
msgstr ""
"El módulo hashlib proporciona una función de ayuda para el cifrado eficiente "
"de un archivo o un objeto similar a un archivo."
#: ../Doc/library/hashlib.rst:272
msgid ""
"Return a digest object that has been updated with contents of file object."
msgstr ""
"Retorna un objeto digest que ha sido actualizado con el contenido del objeto "
"de tipo archivo."
#: ../Doc/library/hashlib.rst:274
msgid ""
"*fileobj* must be a file-like object opened for reading in binary mode. It "
"accepts file objects from builtin :func:`open`, :class:`~io.BytesIO` "
"instances, SocketIO objects from :meth:`socket.socket.makefile`, and "
"similar. The function may bypass Python's I/O and use the file descriptor "
"from :meth:`~io.IOBase.fileno` directly. *fileobj* must be assumed to be in "
"an unknown state after this function returns or raises. It is up to the "
"caller to close *fileobj*."
msgstr ""
"*fileobj* debe ser un objeto similar a un archivo abierto para lectura en "
"modo binario. Acepta objetos fichero de instancias :func:`open`, :class:`~io."
"BytesIO`, objetos SocketIO de :meth:`socket.socket.makefile`, y similares. "
"La función puede saltarse la E/S de Python y usar directamente el descriptor "
"de fichero de :meth:`~io.IOBase.fileno`. Debe asumirse que *fileobj* está en "
"un estado desconocido después de que esta función devuelva o lance. Es "
"responsabilidad del que llama cerrar *fileobj*."
#: ../Doc/library/hashlib.rst:282
msgid ""
"*digest* must either be a hash algorithm name as a *str*, a hash "
"constructor, or a callable that returns a hash object."
msgstr ""
"*digest* debe ser un nombre de algoritmo de cifrado como *str*, un "
"constructor de cifrado o un invocable que devuelva un objeto cifrado."
#: ../Doc/library/hashlib.rst:285
msgid "Example:"
msgstr "Ejemplo:"
#: ../Doc/library/hashlib.rst:308
msgid "Key derivation"
msgstr "Derivación de clave"
#: ../Doc/library/hashlib.rst:310
#, python-format
msgid ""
"Key derivation and key stretching algorithms are designed for secure "
"password hashing. Naive algorithms such as ``sha1(password)`` are not "
"resistant against brute-force attacks. A good password hashing function must "
"be tunable, slow, and include a `salt <https://en.wikipedia.org/wiki/"
"Salt_%28cryptography%29>`_."
msgstr ""
"Los algoritmos de derivación de clave y estiramiento de clave están "
"diseñados para el cifrado seguro de contraseña. Algoritmos ingenuos como "
"``sha1(password)`` no son resistentes contra ataques de fuerza bruta. Una "
"buena función hash de contraseña debe ser afinable, lenta e incluir una `sal "
"<https://en.wikipedia.org/wiki/Salt_%28cryptography%29>`_."
#: ../Doc/library/hashlib.rst:318
msgid ""
"The function provides PKCS#5 password-based key derivation function 2. It "
"uses HMAC as pseudorandom function."
msgstr ""
"La función provee contraseñas PKCS#5 basadas en función de derivación de "
"clave 2. Usa HMAC como función de pseudoaleatoriedad."
#: ../Doc/library/hashlib.rst:321
msgid ""
"The string *hash_name* is the desired name of the hash digest algorithm for "
"HMAC, e.g. 'sha1' or 'sha256'. *password* and *salt* are interpreted as "
"buffers of bytes. Applications and libraries should limit *password* to a "
"sensible length (e.g. 1024). *salt* should be about 16 or more bytes from a "
"proper source, e.g. :func:`os.urandom`."
msgstr ""
"La cadena *hash_name* es el nombre deseado del algoritmo de resumen de hash "
"para HMAC, ej. 'sha1' o 'sha256'. *password* y *salt* son interpretados como "
"búferes de bytes. Aplicaciones y bibliotecas deberían limitar *password* a "
"un largo razonable (ej. 1024). *salt* debería ser sobre 16 o más bytes desde "
"una fuente adecuada, ej. :func:`os.urandom`."
#: ../Doc/library/hashlib.rst:327
msgid ""
"The number of *iterations* should be chosen based on the hash algorithm and "
"computing power. As of 2022, hundreds of thousands of iterations of SHA-256 "
"are suggested. For rationale as to why and how to choose what is best for "
"your application, read *Appendix A.2.2* of NIST-SP-800-132_. The answers on "
"the `stackexchange pbkdf2 iterations question`_ explain in detail."
msgstr ""
"El número de *iterations* debe elegirse en función del algoritmo de cifrado "
"y la potencia de cálculo. A partir de 2022, se sugieren cientos de miles de "
"iteraciones de SHA-256. Para saber por qué y cómo elegir lo mejor para su "
"aplicación, lea el *Apéndice A.2.2* de NIST-SP-800-132_. Las respuestas "
"sobre `stackexchange pbkdf2 iterations question`_ lo explican en detalle."
#: ../Doc/library/hashlib.rst:333
msgid ""
"*dklen* is the length of the derived key. If *dklen* is ``None`` then the "
"digest size of the hash algorithm *hash_name* is used, e.g. 64 for SHA-512."
msgstr ""
"*dklen* es el largo de la clave derivada. Si *dklen* es ``None`` entonces el "
"tamaño de resumen del algoritmo de hash *hash_name* es usado, ej. 64 para "
"SHA-512."
#: ../Doc/library/hashlib.rst:342
msgid "Function only available when Python is compiled with OpenSSL."
msgstr ""
#: ../Doc/library/hashlib.rst:346
msgid ""
"Function now only available when Python is built with OpenSSL. The slow pure "
"Python implementation has been removed."
msgstr ""
#: ../Doc/library/hashlib.rst:352
msgid ""
"The function provides scrypt password-based key derivation function as "
"defined in :rfc:`7914`."
msgstr ""
"La función provee una contraseña scrypt basada en una función derivación de "
"clave como es definida en :rfc:`7914`."
#: ../Doc/library/hashlib.rst:355
msgid ""
"*password* and *salt* must be :term:`bytes-like objects <bytes-like "
"object>`. Applications and libraries should limit *password* to a sensible "
"length (e.g. 1024). *salt* should be about 16 or more bytes from a proper "
"source, e.g. :func:`os.urandom`."
msgstr ""
"*password* y *salt* deben ser :term:`objetos de bytes <bytes-like object>`. "
"Aplicaciones y bibliotecas deberían limitar *password* a un largo razonable "
"(ej. 1024). *salt* debería ser aproximadamente 16 o más bytes de una fuente "
"adecuada, ej. :func:`os.unrandom`."
#: ../Doc/library/hashlib.rst:360
msgid ""
"*n* is the CPU/Memory cost factor, *r* the block size, *p* parallelization "
"factor and *maxmem* limits memory (OpenSSL 1.1.0 defaults to 32 MiB). "
"*dklen* is the length of the derived key."
msgstr ""
"*n* es el factor de coste de CPU/Memoria, *r* el tamaño de bloque, *p* el "
"factor de paralelización y *maxmem* limita la memoria (OpenSSL 1.1.0 por "
"defecto a 32 MiB). *dklen* es el largo de la clave derivada."
#: ../Doc/library/hashlib.rst:368
msgid "BLAKE2"
msgstr "BLAKE2"
#: ../Doc/library/hashlib.rst:375
msgid ""
"BLAKE2_ is a cryptographic hash function defined in :rfc:`7693` that comes "
"in two flavors:"
msgstr ""
"BLAKE2_ es una función de hash criptográfico definida en :rfc:`7693` que "
"viene en dos sabores:"
#: ../Doc/library/hashlib.rst:378
msgid ""
"**BLAKE2b**, optimized for 64-bit platforms and produces digests of any size "
"between 1 and 64 bytes,"
msgstr ""
"**BLAKE2b**, optimizada para plataformas de 64 bits y produce resúmenes de "
"cualquier tamaño entre 1 y 64 bytes,"
#: ../Doc/library/hashlib.rst:381
msgid ""
"**BLAKE2s**, optimized for 8- to 32-bit platforms and produces digests of "
"any size between 1 and 32 bytes."
msgstr ""
"**BLAKE2s**, optimizada para plataformas de 8 a 32 bits y produce resúmenes "
"de cualquier tamaño entre 1 y 32 bytes."
#: ../Doc/library/hashlib.rst:384
msgid ""
"BLAKE2 supports **keyed mode** (a faster and simpler replacement for HMAC_), "
"**salted hashing**, **personalization**, and **tree hashing**."
msgstr ""
"BLAKE2 proporciona el **modo keyed** (un remplazamiento más simple rápido "
"para HMAC_), **cifrado salado** (*salted hashing*), **personalización** y "
"**cifrado de árbol**."
#: ../Doc/library/hashlib.rst:387
msgid ""
"Hash objects from this module follow the API of standard library's :mod:"
"`hashlib` objects."
msgstr ""
"Los objetos hash de este módulo siguen los estándares de los objetos de la "
"biblioteca :mod:`hashlib`."
#: ../Doc/library/hashlib.rst:392
msgid "Creating hash objects"
msgstr "Creando objetos hash"
#: ../Doc/library/hashlib.rst:394
msgid "New hash objects are created by calling constructor functions:"
msgstr "Se crean nuevos objetos hash invocando a las funciones de constructor:"
#: ../Doc/library/hashlib.rst:408
msgid ""
"These functions return the corresponding hash objects for calculating "
"BLAKE2b or BLAKE2s. They optionally take these general parameters:"
msgstr ""
"Estas funciones retornan los objetos hash correspondientes para calcular "
"BLAKE2b o BLAKE2s. Ellas toman opcionalmente estos parámetros generales:"
#: ../Doc/library/hashlib.rst:411
msgid ""
"*data*: initial chunk of data to hash, which must be :term:`bytes-like "
"object`. It can be passed only as positional argument."
msgstr ""
"*data*: trozo inicial de datos a cifrar, el cual debe ser un :term:`bytes-"
"like object`. Puede ser pasado sólo como argumento posicional."
#: ../Doc/library/hashlib.rst:414
msgid "*digest_size*: size of output digest in bytes."
msgstr "*digest_size*: tamaño del resumen de salida en bytes."
#: ../Doc/library/hashlib.rst:416
msgid ""
"*key*: key for keyed hashing (up to 64 bytes for BLAKE2b, up to 32 bytes for "
"BLAKE2s)."
msgstr ""
"*key*: clave para el cifrado de clave (*keyed hashing*) (hasta 64 bytes para "
"BLAKE2b, hasta 32 bytes para BLAKE2s)."
#: ../Doc/library/hashlib.rst:419
msgid ""
"*salt*: salt for randomized hashing (up to 16 bytes for BLAKE2b, up to 8 "
"bytes for BLAKE2s)."
msgstr ""
"*salt*: sal para el cifrado aleatorio (hasta 16 bytes para BLAKE2b, hasta 8 "
"bytes para BLAKE2s)."
#: ../Doc/library/hashlib.rst:422
msgid ""
"*person*: personalization string (up to 16 bytes for BLAKE2b, up to 8 bytes "
"for BLAKE2s)."
msgstr ""
"*person*: cadena de personalización (hasta 16 bytes para BLAKE2b, hasta 8 "
"bytes para BLAKE2s)."
#: ../Doc/library/hashlib.rst:425
msgid "The following table shows limits for general parameters (in bytes):"
msgstr ""
"La siguiente tabla muestra los límites para parámetros generales (en bytes):"
#: ../Doc/library/hashlib.rst:428
msgid "Hash"
msgstr "Cifrado"
#: ../Doc/library/hashlib.rst:428
msgid "digest_size"
msgstr "digest_size"
#: ../Doc/library/hashlib.rst:428
msgid "len(key)"
msgstr "len(key)"
#: ../Doc/library/hashlib.rst:428
msgid "len(salt)"
msgstr "len(salt)"
#: ../Doc/library/hashlib.rst:428
msgid "len(person)"
msgstr "len(person)"
#: ../Doc/library/hashlib.rst:430
msgid "BLAKE2b"
msgstr "BLAKE2b"
#: ../Doc/library/hashlib.rst:430
msgid "64"
msgstr "64"
#: ../Doc/library/hashlib.rst:430
msgid "16"
msgstr "16"
#: ../Doc/library/hashlib.rst:431
msgid "BLAKE2s"
msgstr "BLAKE2s"
#: ../Doc/library/hashlib.rst:431
msgid "32"
msgstr "32"
#: ../Doc/library/hashlib.rst:431
msgid "8"
msgstr "8"
#: ../Doc/library/hashlib.rst:436
msgid ""
"BLAKE2 specification defines constant lengths for salt and personalization "
"parameters, however, for convenience, this implementation accepts byte "
"strings of any size up to the specified length. If the length of the "
"parameter is less than specified, it is padded with zeros, thus, for "
"example, ``b'salt'`` and ``b'salt\\x00'`` is the same value. (This is not "
"the case for *key*.)"
msgstr ""
"La especificación BLAKE2 define largos constantes para los parámetros de sal "
"y personalización, sin embargo, por conveniencia, esta implementación acepta "
"cadenas de bytes de cualquier tamaño hasta el largo especificado. Si el "
"largo del parámetro es menor que el especificado, es acolchado con ceros, "
"por lo tanto, por ejemplo, ``b'salt'`` y ``b'salt\\x00'`` es el mismo valor. "
"(Este no es el caso para *key*.)"
#: ../Doc/library/hashlib.rst:443
msgid "These sizes are available as module `constants`_ described below."
msgstr ""
"Estos tamaños están disponibles como `constantes`_ del módulo descritas "
"abajo."
#: ../Doc/library/hashlib.rst:445
msgid ""
"Constructor functions also accept the following tree hashing parameters:"
msgstr ""
"Las funciones constructoras también aceptan los siguientes parámetros de "
"cifrado de árbol:"
#: ../Doc/library/hashlib.rst:447
msgid "*fanout*: fanout (0 to 255, 0 if unlimited, 1 in sequential mode)."
msgstr ""
"*fanout*: despliegue en abanico (0 a 255, 0 si ilimitado, 1 en modo "
"secuencial)."
#: ../Doc/library/hashlib.rst:449
msgid ""
"*depth*: maximal depth of tree (1 to 255, 255 if unlimited, 1 in sequential "
"mode)."
msgstr ""
"*depth*: profundidad máxima del árbol (1 a 255, 255 si ilimitado, 1 en modo "
"secuencial)."
#: ../Doc/library/hashlib.rst:452
msgid ""
"*leaf_size*: maximal byte length of leaf (0 to ``2**32-1``, 0 if unlimited "
"or in sequential mode)."
msgstr ""
"*leaf_size*: tamaño máximo en bytes de hoja (0 a ``2**32-1``, 0 si ilimitado "
"o en modo secuencial)."
#: ../Doc/library/hashlib.rst:455
msgid ""
"*node_offset*: node offset (0 to ``2**64-1`` for BLAKE2b, 0 to ``2**48-1`` "
"for BLAKE2s, 0 for the first, leftmost, leaf, or in sequential mode)."
msgstr ""
"*node_offset*: desplazamiento del nodo (0 a ``2**64-1`` para BLAKE2b, 0 a "
"``2**48-1`` para BLAKE2s, 0 para la primera hoja más a la izquierda, o en "
"modo secuencial)."
#: ../Doc/library/hashlib.rst:458
msgid ""
"*node_depth*: node depth (0 to 255, 0 for leaves, or in sequential mode)."
msgstr ""
"*node_depth*: profundidad de nodo (0 a 255, 0 para hojas o en modo "
"secuencial)."
#: ../Doc/library/hashlib.rst:460
msgid ""
"*inner_size*: inner digest size (0 to 64 for BLAKE2b, 0 to 32 for BLAKE2s, 0 "
"in sequential mode)."
msgstr ""
"*inner_size*: tamaño interno del resumen (0 a 64 para BLAKE2b, 0 a 32 para "
"BLAKE2s, 0 en modo secuencial)."
#: ../Doc/library/hashlib.rst:463
msgid ""
"*last_node*: boolean indicating whether the processed node is the last one "
"(``False`` for sequential mode)."
msgstr ""
"*last_node*: booleano indicando si el nodo procesado es el último (``False`` "
"para modo secuencial)."
msgid "Explanation of tree mode parameters."
msgstr "Explicación de los parámetros del modo árbol."
#: ../Doc/library/hashlib.rst:470
#, fuzzy
msgid ""
"See section 2.10 in `BLAKE2 specification <https://www.blake2.net/"
"blake2_20130129.pdf>`_ for comprehensive review of tree hashing."
msgstr ""
"Consulta la sección 2.10 en la `especificación BLAKE2 <https://blake2.net/"
"blake2_20130129.pdf>`_ para una revisión integral del cifrado en árbol."
#: ../Doc/library/hashlib.rst:476
msgid "Constants"
msgstr "Constantes"
#: ../Doc/library/hashlib.rst:481
msgid "Salt length (maximum length accepted by constructors)."
msgstr "Largo de sal (largo máximo aceptado por los constructores)."
#: ../Doc/library/hashlib.rst:487
msgid ""
"Personalization string length (maximum length accepted by constructors)."
msgstr ""
"Largo de cadena de personalización (largo máximo aceptado por los "
"constructores)."
#: ../Doc/library/hashlib.rst:493
msgid "Maximum key size."
msgstr "Tamaño máximo de clave."
#: ../Doc/library/hashlib.rst:499
msgid "Maximum digest size that the hash function can output."
msgstr "Tamaño máximo de resumen que puede producir la función hash."
#: ../Doc/library/hashlib.rst:503
msgid "Examples"
msgstr "Ejemplos"
#: ../Doc/library/hashlib.rst:506
msgid "Simple hashing"
msgstr "Cifrado simple"
#: ../Doc/library/hashlib.rst:508
#, fuzzy
msgid ""
"To calculate hash of some data, you should first construct a hash object by "
"calling the appropriate constructor function (:func:`blake2b` or :func:"
"`blake2s`), then update it with the data by calling :meth:`~hash.update` on "
"the object, and, finally, get the digest out of the object by calling :meth:"
"`~hash.digest` (or :meth:`~hash.hexdigest` for hex-encoded string)."
msgstr ""
"Para calcular el hash de algunos datos, primero debes construir un objeto "
"hash invocando a la función del constructor apropiada (:func:`blake2b` o :"
"func:`blake2s`), entonces actualizarlo con los datos invocando :meth:"
"`update` en el objeto y, finalmente, obtener el resumen del objeto "
"invocando :meth:`digest` (o :meth:`hexdigest` para una cadena codificada en "
"hexadecimal)."
#: ../Doc/library/hashlib.rst:521
msgid ""
"As a shortcut, you can pass the first chunk of data to update directly to "
"the constructor as the positional argument:"
msgstr ""
"Como atajo, puedes pasar el primer trozo de datos para actualizar "
"directamente el constructor como el argumento posicional:"
#: ../Doc/library/hashlib.rst:528
msgid ""
"You can call :meth:`hash.update` as many times as you need to iteratively "
"update the hash:"
msgstr ""
"Puedes invocar :meth:`hash.update` tantas veces como necesites para "
"actualizar el hash iterativamente:"
#: ../Doc/library/hashlib.rst:542
msgid "Using different digest sizes"
msgstr "Usar diferentes tamaños de resumen"
#: ../Doc/library/hashlib.rst:544
msgid ""
"BLAKE2 has configurable size of digests up to 64 bytes for BLAKE2b and up to "
"32 bytes for BLAKE2s. For example, to replace SHA-1 with BLAKE2b without "
"changing the size of output, we can tell BLAKE2b to produce 20-byte digests:"
msgstr ""
"BLAKE2 tiene tamaño de resúmenes configurables de hasta 64 bytes para "
"BLAKE2b y 32 bytes para BLAKE2s. Por ejemplo, para remplazar SHA-1 con "
"BLAKE2b sin cambiar el tamaño de la salida, puedes decirle a BLAKE2b que "
"produzca resúmenes de 20 bytes:"
#: ../Doc/library/hashlib.rst:558
msgid ""
"Hash objects with different digest sizes have completely different outputs "
"(shorter hashes are *not* prefixes of longer hashes); BLAKE2b and BLAKE2s "
"produce different outputs even if the output length is the same:"
msgstr ""
"Objetos hash con diferentes tamaños de resumen tienen salidas completamente "
"diferentes (hashes más cortos *no* son prefijos de hashes más largos); "
"BLAKE2b y BLAKE2s producen salidas diferentes incluso si el largo de salida "
"es el mismo:"
#: ../Doc/library/hashlib.rst:574
msgid "Keyed hashing"
msgstr "Cifrado de clave"
#: ../Doc/library/hashlib.rst:576
msgid ""
"Keyed hashing can be used for authentication as a faster and simpler "
"replacement for `Hash-based message authentication code <https://en."
"wikipedia.org/wiki/HMAC>`_ (HMAC). BLAKE2 can be securely used in prefix-MAC "
"mode thanks to the indifferentiability property inherited from BLAKE."
msgstr ""
"El cifrado de clave puede ser usado para autentificación como un remplazo "
"más rápido y simple para `Código de autentificación de mensajes en clave-"
"hash <https://es.wikipedia.org/wiki/HMAC>`_ (HMAC). BLAKE2 puede ser usado "
"de forma segura en modo de prefijo MAC gracias a la propiedad de "
"indiferenciabilidad heredada de BLAKE."
#: ../Doc/library/hashlib.rst:582
msgid ""
"This example shows how to get a (hex-encoded) 128-bit authentication code "
"for message ``b'message data'`` with key ``b'pseudorandom key'``::"
msgstr ""
"Este ejemplo muestra como obtener un código de autentificación (codificado "
"como hexadecimal) de 128 bits para el mensaje ``b'message data'`` con la "
"clave ``b'pseudorandom key'``::"
#: ../Doc/library/hashlib.rst:592
msgid ""
"As a practical example, a web application can symmetrically sign cookies "
"sent to users and later verify them to make sure they weren't tampered with::"
msgstr ""
"Como ejemplo práctico, una aplicación web puede firmar simétricamente "
"cookies enviadas a los usuarios y verificarlas más tarde para asegurar que "
"no fueron manipuladas con::"
#: ../Doc/library/hashlib.rst:621
msgid ""
"Even though there's a native keyed hashing mode, BLAKE2 can, of course, be "
"used in HMAC construction with :mod:`hmac` module::"
msgstr ""
"Incluso aunque hay un modo de cifrado de claves nativo, BLAKE2 puede, por "
"supuesto, ser usado en construcción de HMAC con el módulo :mod:`hmac`::"
#: ../Doc/library/hashlib.rst:632
msgid "Randomized hashing"
msgstr "Cifrado aleatorio"
#: ../Doc/library/hashlib.rst:634
msgid ""
"By setting *salt* parameter users can introduce randomization to the hash "
"function. Randomized hashing is useful for protecting against collision "
"attacks on the hash function used in digital signatures."
msgstr ""
"Definiendo el parámetro *salt* los usuarios pueden introducir aleatoriedad a "
"la función hash. El cifrado aleatorio es útil para proteger contra ataques "
"de colisión en la función hash usada en firmas digitales."
#: ../Doc/library/hashlib.rst:638
msgid ""
"Randomized hashing is designed for situations where one party, the message "
"preparer, generates all or part of a message to be signed by a second party, "
"the message signer. If the message preparer is able to find cryptographic "
"hash function collisions (i.e., two messages producing the same hash value), "
"then they might prepare meaningful versions of the message that would "
"produce the same hash value and digital signature, but with different "
"results (e.g., transferring $1,000,000 to an account, rather than $10). "
"Cryptographic hash functions have been designed with collision resistance as "
"a major goal, but the current concentration on attacking cryptographic hash "
"functions may result in a given cryptographic hash function providing less "
"collision resistance than expected. Randomized hashing offers the signer "
"additional protection by reducing the likelihood that a preparer can "
"generate two or more messages that ultimately yield the same hash value "
"during the digital signature generation process --- even if it is practical "
"to find collisions for the hash function. However, the use of randomized "
"hashing may reduce the amount of security provided by a digital signature "
"when all portions of the message are prepared by the signer."
msgstr ""
"El cifrado aleatorio está diseñado para situaciones en las que una parte, el "
"preparador del mensaje, genera todo o parte de un mensaje para ser firmado "
"por una segunda parte, el firmante del mensaje. Si el preparador del mensaje "
"es capaz de encontrar colisiones de funciones hash criptográficas (ej., dos "
"mensajes produciendo el mismo valor de hash), entonces ellos pueden preparar "
"versiones significativas del mensaje que producirían el mismo valor de hash "
"y firma digital, pero con diferentes resultados (ej., transfiriendo "
"1,000,000 $ a una cuenta, en lugar de 10 $), Las funciones de hash "
"criptográfico han sido diseñadas con resistencia de colisión como objetivo "
"principal, pero la concentración actual en el ataque a las funciones hash "
"criptográficas puede resultar en una función hash criptográfica dada que "
"provea menor resistencia de colisión de la esperada. El cifrado aleatorio "
"ofrece al firmante protección adicional reduciendo la probabilidad de que un "
"preparador puede generar dos o más mensajes que en última instancia producen "
"el mismo valor hash durante el proceso de generación de la firma digital, "
"--- incluso si es práctico encontrar colisiones para la función hash. Sin "
"embargo, el uso de cifrado aleatorio puede reducir la cantidad de seguridad "
"provista por una firma digital cuando todas las porciones del mensaje son "
"preparadas por el firmante."
#: ../Doc/library/hashlib.rst:657
#, fuzzy
msgid ""
"(`NIST SP-800-106 \"Randomized Hashing for Digital Signatures\" <https://"
"csrc.nist.gov/publications/detail/sp/800-106/archive/2009-02-25>`_)"
msgstr ""
"(`NIST SP-800-106 \"Randomized Hashing for Digital Signatures\" <https://"
"csrc.nist.gov/publications/detail/sp/800-106/final>`_)"
#: ../Doc/library/hashlib.rst:660
msgid ""
"In BLAKE2 the salt is processed as a one-time input to the hash function "
"during initialization, rather than as an input to each compression function."
msgstr ""
"En BLAKE2 la sal es procesada como una entrada de una vez a la función hash "
"durante la inicialización, en lugar de como una entrada para cada función de "
"compresión."
#: ../Doc/library/hashlib.rst:665
#, fuzzy
msgid ""
"*Salted hashing* (or just hashing) with BLAKE2 or any other general-purpose "
"cryptographic hash function, such as SHA-256, is not suitable for hashing "
"passwords. See `BLAKE2 FAQ <https://www.blake2.net/#qa>`_ for more "
"information."
msgstr ""
"El *cifrado salado* (o sólo cifrado) con BLAKE2 o cualquier otra función de "
"hash criptográfico de propósito general, como SHA-256, no son aptas para "
"cifrar contraseñas. Ver `BLAKE2 FAQ <https://blake2.net/#qa>`_ para más "
"información."
#: ../Doc/library/hashlib.rst:688
msgid "Personalization"
msgstr "Personalización"
#: ../Doc/library/hashlib.rst:690
msgid ""