کتابخانه‌ی استاندارد · امنیت و رمزنگاری

رمزنگاری crypto

چکیده‌ی SHA و MD5، امضای HMAC، عدد تصادفی امن و درهم کردن گذرواژه.

واردسازی رمزنگاری
در این صفحه
  1. گونه‌ها
  2. روال‌ها

این بسته ابزارهای پایه‌ی رمزنگاری را می‌دهد که همه به زبان سلام نوشته شده‌اند. برای چکیده‌ی یک متن روال‌های ... شانزدهی ساده‌ترین راه‌اند؛ روال‌های ... بایت چکیده را در حافظه‌ای که خودتان می‌دهید می‌نویسند.

گذرواژه‌ی کاربران را هرگز خام یا با یک چکیده‌ی ساده ذخیره نکنید؛ درهم گذرواژه و تایید گذرواژه را به کار ببرید. برای مقایسه‌ی توکن‌ها هم برابری راز را به‌جای == به کار ببرید. برای رمز کردن داده بسته‌ی تی ال اس را ببینید.

گونه‌ها

شا۲۵۶ Sha256

ساختار شا۲۵۶
وضعیت SHA-256 برای داده‌ای که تکه‌تکه می‌رسد، مثل یک پرونده‌ی بزرگ.
نامانگلیسیگونهتوضیح
hhطبیعی۳۲[]وضعیت درونی.
blkblkطبیعی۸[]بلوک ناقص.
blenblenصحیح = 0طول بلوک ناقص.
totaltotalطبیعی۶۴شمار کل بایت‌ها.
crypto-Hash.salam
واردسازی رمزنگاری
واردسازی کدگذاری
واردسازی حافظه

روال ریشه:
    سرچاپ رمزنگاری.شا۲۵۶ شانزدهی("abc")
    سرچاپ رمزنگاری.شا۵۱۲ شانزدهی("abc").طول()
    سرچاپ رمزنگاری.شا۱ شانزدهی("abc")
    سرچاپ رمزنگاری.شا۱ پایه۶۴("abc")
    سرچاپ رمزنگاری.ام دی۵ شانزدهی("abc")

    متن := "abc"
    خروجی := حافظه.تخصیص(۶۴ برگردان طبیعی۶۴)
    رمزنگاری.شا۲۵۶ بایت(متن برگردان تهی*، ۳، خروجی)
    سرچاپ کدگذاری.کدگذاری بایت‌ها پایه۶۴(خروجی، ۳۲)
    رمزنگاری.شا۳۸۴ بایت(متن برگردان تهی*، ۳، خروجی)
    سرچاپ کدگذاری.کدگذاری بایت‌ها پایه۶۴(خروجی، ۴۸)
    رمزنگاری.شا۵۱۲ بایت(متن برگردان تهی*، ۳، خروجی)
    سرچاپ کدگذاری.کدگذاری بایت‌ها پایه۶۴(خروجی، ۱۶).طول()
    رمزنگاری.شا۱ بایت(متن برگردان تهی*، ۳، خروجی)
    سرچاپ کدگذاری.کدگذاری بایت‌ها پایه۶۴(خروجی، ۲۰)
    رمزنگاری.ام دی۵ بایت(متن برگردان تهی*، ۳، خروجی)
    سرچاپ کدگذاری.کدگذاری بایت‌ها پایه۶۴(خروجی، ۱۶)

    ناپایا ح := رمزنگاری.شا۲۵۶ جدید()
    رمزنگاری.به روز رسانی شا۲۵۶(ح، "a" برگردان تهی*، ۱)
    رمزنگاری.به روز رسانی شا۲۵۶(ح، "bc" برگردان تهی*، ۲)
    رمزنگاری.نهایی شا۲۵۶(ح، خروجی)
    سرچاپ کدگذاری.کدگذاری بایت‌ها پایه۶۴(خروجی، ۳۲)
    ناپایا ب := رمزنگاری.شا۵۱۲ جدید()
    رمزنگاری.به روز رسانی شا۵۱۲(ب، متن برگردان تهی*، ۳)
    رمزنگاری.نهایی شا۵۱۲(ب، خروجی)
    سرچاپ ب.outlen
    ناپایا س := رمزنگاری.شا۳۸۴ جدید()
    رمزنگاری.به روز رسانی شا۵۱۲(س، متن برگردان تهی*، ۳)
    رمزنگاری.نهایی شا۵۱۲(س، خروجی)
    سرچاپ س.outlen، کدگذاری.کدگذاری بایت‌ها پایه۶۴(خروجی، ۴۸)
    حافظه.آزادسازی(خروجی)

    سرچاپ رمزنگاری.درهم رشته("سلام") == رمزنگاری.درهم رشته("سلام")، رمزنگاری.درهم رشته("a") != رمزنگاری.درهم رشته("b")
    سرچاپ رمزنگاری.درهم بایت(متن برگردان تهی*، ۳ برگردان طبیعی۶۴) == رمزنگاری.درهم رشته("abc")
    سرچاپ رمزنگاری.درهم عدد(۴۲ برگردان طبیعی۶۴) != رمزنگاری.درهم عدد(۴۳ برگردان طبیعی۶۴)
پایان
خروجیba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad 128 a9993e364706816aba3e25717850c26c9cd0d89d qZk+NkcGgWq6PiVxeFDCbJzQ2J0= 900150983cd24fb0d6963f7d28e17f72 ungWv48Bz+pBQUDeXa4iI7ADYaOWF3qctBD/YfIAFa0= ywB1P0WjXou1oD1pmsZQBycsMqsO3tFjGotgWkP/W+2AhgcroefMI1i67KE0yCWn 24 qZk+NkcGgWq6PiVxeFDCbJzQ2J0= kAFQmDzST7DWlj99KOF/cg== ungWv48Bz+pBQUDeXa4iI7ADYaOWF3qctBD/YfIAFa0= 64 48 ywB1P0WjXou1oD1pmsZQBycsMqsO3tFjGotgWkP/W+2AhgcroefMI1i67KE0yCWn true true true true

شا۵۱۲ Sha512

ساختار شا۵۱۲
وضعیت SHA-512 یا SHA-384 برای داده‌ی تکه‌تکه.
نامانگلیسیگونهتوضیح
hhطبیعی۶۴[]وضعیت درونی.
blkblkطبیعی۸[]بلوک ناقص.
blenblenصحیح = 0طول بلوک ناقص.
totaltotalطبیعی۶۴شمار کل بایت‌ها.
outlenoutlenصحیح = 64طول چکیده: ۶۴ برای SHA-512 و ۴۸ برای SHA-384.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: crypto-Hash.salam

روال‌ها

شا۲۵۶ شانزدهی Sha256Hex

روال شا۲۵۶ شانزدهی(data: رشته): رشته
چکیده‌ی SHA-256 به شکل شانزدهی، ۶۴ نویسه.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: crypto-Hash.salam

پی بی کِی دی اف۲ شانزدهی Pbkdf2HmacSha256Hex

روال پی بی کِی دی اف۲ شانزدهی(password: رشته، salt: رشته، iterations: صحیح، keylen: صحیح): رشته
کلید را با PBKDF2-HMAC-SHA256 از گذرواژه و نمک با شمار تکرار داده‌شده می‌سازد.
crypto-Password.salam
واردسازی رمزنگاری
واردسازی رشته
واردسازی حافظه

روال ریشه:
    ذخیره := رمزنگاری.درهم گذرواژه("s3cret-پسورد")
    سرچاپ رشته.شروع با(ذخیره، "pbkdf2-sha256$")
    سرچاپ رمزنگاری.تایید گذرواژه("s3cret-پسورد"، ذخیره)، رمزنگاری.تایید گذرواژه("wrong"، ذخیره)
    سرچاپ ذخیره != رمزنگاری.درهم گذرواژه("s3cret-پسورد")

    سرچاپ رمزنگاری.پی بی کِی دی اف۲ شانزدهی("password"، "salt"، ۱، ۳۲)
    سرچاپ رمزنگاری.برابری راز("abc"، "abc")، رمزنگاری.برابری راز("abc"، "xyz")

    سرچاپ رمزنگاری.تصادفی ایمن شانزدهی(۱۶).طول()، رمزنگاری.توکن تصادفی ایمن(۳۲).طول() > ۰
    ب := حافظه.تخصیص(۸ برگردان طبیعی۶۴)
    رمزنگاری.بایت های تصادفی(ب، ۸)
    حافظه.آزادسازی(ب)
پایان
خروجیtrue true false true 120fb6cffcf8b32c43e7225256c4f837a86548c92ccc35480805987cb70be17b true false 32 true

درهم گذرواژه HashPassword

روال درهم گذرواژه(password: رشته): رشته
گذرواژه را با نمک تصادفی درهم می‌کند و رشته‌ای به شکل pbkdf2-sha256$تکرار$نمک$درهم برمی‌گرداند که در پایگاه داده نگه می‌دارید. هر بار خروجی فرق می‌کند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: crypto-Password.salam

تایید گذرواژه VerifyPassword

روال تایید گذرواژه(password: رشته، encoded: رشته): منطقی
گذرواژه را با رشته‌ای که درهم گذرواژه ساخته بررسی می‌کند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: crypto-Password.salam

برابری راز SecretEquals

روال برابری راز(a: رشته، b: رشته): منطقی
دو راز را در زمان ثابت مقایسه می‌کند تا زمان پاسخ چیزی درباره‌ی آن‌ها لو ندهد؛ برای توکن‌ها و امضاها.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: crypto-Password.salam

اچ مک شا۲۵۶ شانزدهی HmacSha256Hex

روال اچ مک شا۲۵۶ شانزدهی(key: رشته، msg: رشته): رشته
امضای HMAC-SHA256 پیام با کلید، به شکل شانزدهی؛ برای بررسی اینکه پیام دست نخورده و از طرف دارنده‌ی کلید است.
crypto-Hmac.salam
واردسازی رمزنگاری
واردسازی کدگذاری
واردسازی حافظه

روال ریشه:
    کلید := "key"
    پیام := "The quick brown fox jumps over the lazy dog"
    سرچاپ رمزنگاری.اچ مک شا۲۵۶ شانزدهی(کلید، پیام)
    سرچاپ رمزنگاری.اچ مک شا۱ شانزدهی(کلید، پیام)
    سرچاپ رمزنگاری.اچ مک شا۱ بیس۶۴(کلید، پیام)
    سرچاپ رمزنگاری.اچ مک شا۳۸۴ شانزدهی(کلید، پیام).طول()، رمزنگاری.اچ مک شا۵۱۲ شانزدهی(کلید، پیام).طول()

    خروجی := حافظه.تخصیص(۶۴ برگردان طبیعی۶۴)
    رمزنگاری.اچ مک شا۲۵۶ بایت(کلید، پیام، خروجی)
    الف := کدگذاری.کدگذاری بایت‌ها پایه۶۴(خروجی، ۳۲)
    رمزنگاری.اچ مک شا۲۵۶ خام(کلید برگردان تهی*، ۳، پیام برگردان تهی*، پیام.طول()، خروجی)
    سرچاپ الف == کدگذاری.کدگذاری بایت‌ها پایه۶۴(خروجی، ۳۲)
    رمزنگاری.اچ مک شا۱ بایتی(کلید، پیام، خروجی)
    ب := کدگذاری.کدگذاری بایت‌ها پایه۶۴(خروجی، ۲۰)
    رمزنگاری.اچ مک شا۱ خام(کلید برگردان تهی*، ۳، پیام برگردان تهی*، پیام.طول()، خروجی)
    سرچاپ ب == کدگذاری.کدگذاری بایت‌ها پایه۶۴(خروجی، ۲۰)، ب == رمزنگاری.اچ مک شا۱ بیس۶۴(کلید، پیام)
    رمزنگاری.اچ مک شا۳۸۴ بایت(کلید، پیام، خروجی)
    ج := کدگذاری.کدگذاری بایت‌ها پایه۶۴(خروجی، ۴۸)
    رمزنگاری.اچ مک شا۳۸۴ خام(کلید برگردان تهی*، ۳، پیام برگردان تهی*، پیام.طول()، خروجی)
    سرچاپ ج == کدگذاری.کدگذاری بایت‌ها پایه۶۴(خروجی، ۴۸)
    رمزنگاری.اچ مک شا۵۱۲ بایت(کلید، پیام، خروجی)
    د := کدگذاری.کدگذاری بایت‌ها پایه۶۴(خروجی، ۶۴)
    رمزنگاری.اچ مک شا۵۱۲ خام(کلید برگردان تهی*، ۳، پیام برگردان تهی*، پیام.طول()، خروجی)
    سرچاپ د == کدگذاری.کدگذاری بایت‌ها پایه۶۴(خروجی، ۶۴)
    حافظه.آزادسازی(خروجی)
پایان
خروجیf7bc83f430538424b13298e6aa6fb143ef4d59a14946175997479dbc2d1a3cd8 de7c9b85b8b78aa6bc8a7a36f70a90701c9db4d9 3nybhbi3iqa8ino29wqQcBydtNk= 96 128 true true true true true

شا۱ شانزدهی Sha1Hex

روال شا۱ شانزدهی(data: رشته): رشته
چکیده‌ی SHA-1 به شکل شانزدهی. SHA-1 هم برای امنیت دیگر کافی نیست؛ برای امضا SHA-256 را به کار ببرید.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: crypto-Hash.salam

شا۱ پایه۶۴ Sha1Base64

روال شا۱ پایه۶۴(data: رشته): رشته
چکیده‌ی SHA-1 به شکل بیس۶۴؛ مثلاً برای دست‌دهی وب‌سوکت.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: crypto-Hash.salam

شا۱ بایت Sha1Bytes

روال شا۱ بایت(p: تهی*، n: صحیح، out: تهی*)
چکیده‌ی SHA-1، ۲۰ بایت، را در خروجی می‌نویسد.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: crypto-Hash.salam

شا۲۵۶ بایت Sha256Bytes

روال شا۲۵۶ بایت(p: تهی*، n: صحیح، out: تهی*)
چکیده‌ی SHA-256، ۳۲ بایت، را در خروجی می‌نویسد.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: crypto-Hash.salam

شا۳۸۴ بایت Sha384Bytes

روال شا۳۸۴ بایت(p: تهی*، n: صحیح، out: تهی*)
چکیده‌ی SHA-384، ۴۸ بایت.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: crypto-Hash.salam

شا۵۱۲ بایت Sha512Bytes

روال شا۵۱۲ بایت(p: تهی*، n: صحیح، out: تهی*)
چکیده‌ی SHA-512، ۶۴ بایت.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: crypto-Hash.salam

شا۲۵۶ جدید Sha256New

روال شا۲۵۶ جدید(): شا۲۵۶
وضعیت تازه‌ی SHA-256.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: crypto-Hash.salam

به روز رسانی شا۲۵۶ Sha256Update

روال به روز رسانی شا۲۵۶(s &: شا۲۵۶، p: تهی*، n: صحیح)
تکه‌ی بعدی داده را می‌افزاید.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: crypto-Hash.salam

نهایی شا۲۵۶ Sha256Final

روال نهایی شا۲۵۶(s: شا۲۵۶، out: تهی*)
چکیده‌ی نهایی را در خروجی می‌نویسد.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: crypto-Hash.salam

شا۳۸۴ جدید Sha384New

روال شا۳۸۴ جدید(): شا۵۱۲
وضعیت تازه‌ی SHA-384؛ با روال‌های شا۵۱۲ ادامه دهید.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: crypto-Hash.salam

شا۵۱۲ جدید Sha512New

روال شا۵۱۲ جدید(): شا۵۱۲
وضعیت تازه‌ی SHA-512.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: crypto-Hash.salam

به روز رسانی شا۵۱۲ Sha512Update

روال به روز رسانی شا۵۱۲(s &: شا۵۱۲، p: تهی*، n: صحیح)
تکه‌ی بعدی داده را می‌افزاید.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: crypto-Hash.salam

نهایی شا۵۱۲ Sha512Final

روال نهایی شا۵۱۲(s: شا۵۱۲، out: تهی*)
چکیده‌ی نهایی را به طول outlen می‌نویسد.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: crypto-Hash.salam

درهم بایت HashBytes

روال درهم بایت(p: تهی*، n: طبیعی۶۴): طبیعی۶۴
درهم سریع و غیررمزنگارانه‌ی بایت‌ها؛ برای جدول درهم و مانند آن، نه برای امنیت.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: crypto-Hash.salam

درهم رشته HashStr

روال درهم رشته(s: رشته): طبیعی۶۴
درهم سریع یک رشته.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: crypto-Hash.salam

درهم عدد HashInt

روال درهم عدد(x: طبیعی۶۴): طبیعی۶۴
درهم سریع یک عدد.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: crypto-Hash.salam

تصادفی ایمن شانزدهی RandomHex

روال تصادفی ایمن شانزدهی(n: صحیح): رشته
n بایت تصادفی امن از سیستم‌عامل، به شکل شانزدهی با ۲n نویسه؛ برای شناسه‌ها و نمک.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: crypto-Password.salam

توکن تصادفی ایمن RandomToken

روال توکن تصادفی ایمن(n: صحیح): رشته
توکن تصادفی امن از n بایت، به شکل بیس۶۴ نشانی‌امن؛ برای توکن نشست و بازیابی گذرواژه.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: crypto-Password.salam

بایت های تصادفی RandomBytes

روال بایت های تصادفی(p: تهی*، n: صحیح)
n بایت تصادفی امن را در حافظه‌ی داده‌شده می‌نویسد. اگر سیستم‌عامل نتواند، برنامه متوقف می‌شود.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: crypto-Password.salam

ام دی۵ بایت Md5Bytes

روال ام دی۵ بایت(p: تهی*، n: صحیح، out: تهی*)
چکیده‌ی MD5، ۱۶ بایت، را در خروجی می‌نویسد. MD5 شکسته است؛ فقط برای سازگاری با سامانه‌های قدیمی.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: crypto-Hash.salam

ام دی۵ شانزدهی Md5Hex

روال ام دی۵ شانزدهی(data: رشته): رشته
چکیده‌ی MD5 به شکل شانزدهی.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: crypto-Hash.salam

اچ مک شا۲۵۶ خام HmacSha256Raw

روال اچ مک شا۲۵۶ خام(key: تهی*، klen: صحیح، msg: تهی*، mlen: صحیح، out: تهی*)
HMAC-SHA256 با کلید و پیامی که به شکل اشاره‌گر و طول می‌دهید؛ برای داده‌ی دودویی.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: crypto-Hmac.salam

اچ مک شا۳۸۴ خام HmacSha384Raw

روال اچ مک شا۳۸۴ خام(key: تهی*، klen: صحیح، msg: تهی*، mlen: صحیح، out: تهی*)
HMAC-SHA384 خام.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: crypto-Hmac.salam

اچ مک شا۵۱۲ خام HmacSha512Raw

روال اچ مک شا۵۱۲ خام(key: تهی*، klen: صحیح، msg: تهی*، mlen: صحیح، out: تهی*)
HMAC-SHA512 خام.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: crypto-Hmac.salam

اچ مک شا۲۵۶ بایت HmacSha256Bytes

روال اچ مک شا۲۵۶ بایت(key: رشته، msg: رشته، out: تهی*)
HMAC-SHA256، ۳۲ بایت، را در خروجی می‌نویسد.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: crypto-Hmac.salam

اچ مک شا۳۸۴ بایت HmacSha384Bytes

روال اچ مک شا۳۸۴ بایت(key: رشته، msg: رشته، out: تهی*)
HMAC-SHA384، ۴۸ بایت.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: crypto-Hmac.salam

اچ مک شا۵۱۲ بایت HmacSha512Bytes

روال اچ مک شا۵۱۲ بایت(key: رشته، msg: رشته، out: تهی*)
HMAC-SHA512، ۶۴ بایت.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: crypto-Hmac.salam

اچ مک شا۳۸۴ شانزدهی HmacSha384Hex

روال اچ مک شا۳۸۴ شانزدهی(key: رشته، msg: رشته): رشته
HMAC-SHA384 به شکل شانزدهی.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: crypto-Hmac.salam

اچ مک شا۵۱۲ شانزدهی HmacSha512Hex

روال اچ مک شا۵۱۲ شانزدهی(key: رشته، msg: رشته): رشته
HMAC-SHA512 به شکل شانزدهی.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: crypto-Hmac.salam

شا۵۱۲ شانزدهی Sha512Hex

روال شا۵۱۲ شانزدهی(data: رشته): رشته
چکیده‌ی SHA-512 به شکل شانزدهی، ۱۲۸ نویسه.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: crypto-Hash.salam

اچ مک شا۱ خام HmacSha1Raw

روال اچ مک شا۱ خام(key: تهی*، klen: صحیح، msg: تهی*، mlen: صحیح، out: تهی*)
HMAC-SHA1 خام.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: crypto-Hmac.salam

اچ مک شا۱ بایتی HmacSha1Bytes

روال اچ مک شا۱ بایتی(key: رشته، msg: رشته، out: تهی*)
HMAC-SHA1، ۲۰ بایت.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: crypto-Hmac.salam

اچ مک شا۱ شانزدهی HmacSha1Hex

روال اچ مک شا۱ شانزدهی(key: رشته، msg: رشته): رشته
HMAC-SHA1 به شکل شانزدهی؛ برای سرویس‌های قدیمی.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: crypto-Hmac.salam

اچ مک شا۱ بیس۶۴ HmacSha1Base64

روال اچ مک شا۱ بیس۶۴(key: رشته، msg: رشته): رشته
HMAC-SHA1 به شکل بیس۶۴؛ مثلاً امضای OAuth 1.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: crypto-Hmac.salam