পাওয়ারশেলে এমডি 5 চেকসাম কীভাবে পাবেন


179

আমি কিছু সামগ্রীর MD5 চেকসাম গণনা করতে চাই । আমি কীভাবে পাওয়ারশেলে এটি করব?


3
"কিছু বিষয়বস্তু" কি? একটি নথি? স্ট্রিং?
vcsjones

উত্তর:


326

যদি সামগ্রীটি একটি স্ট্রিং থাকে:

$someString = "Hello, World!"
$md5 = New-Object -TypeName System.Security.Cryptography.MD5CryptoServiceProvider
$utf8 = New-Object -TypeName System.Text.UTF8Encoding
$hash = [System.BitConverter]::ToString($md5.ComputeHash($utf8.GetBytes($someString)))

যদি সামগ্রীটি কোনও ফাইল হয়:

$someFilePath = "C:\foo.txt"
$md5 = New-Object -TypeName System.Security.Cryptography.MD5CryptoServiceProvider
$hash = [System.BitConverter]::ToString($md5.ComputeHash([System.IO.File]::ReadAllBytes($someFilePath)))

পাওয়ারশেল সংস্করণ 4-এ শুরু করে, বক্সের বাইরে ফাইলগুলি Get-FileHashসেমিডিলেট দিয়ে করা সহজ:

Get-FileHash <filepath> -Algorithm MD5

এটি অবশ্যই অগ্রাধিকারযোগ্য কারণ এটি মন্তব্যগুলিতে চিহ্নিত প্রথম সমাধান প্রস্তাবিত সমস্যাগুলি এড়িয়ে চলে (একটি স্ট্রিম ব্যবহার করে, এটি বন্ধ করে দেয় এবং বড় ফাইলগুলিকে সমর্থন করে)।


12
Exception calling "ReadAllBytes" with "1" argument(s): "The file is too long. This operation is currently limited to supporting files less than 2 gigabytes in size."পাওয়ারশেলের কাছে নতুন একজন লিনাক্স লোক হিসাবে, আমি একটি এমডি 5 যোগফল পাচ্ছি এমন লড়াইগুলি নিয়ে আমি খুব বিরক্ত, যা কেবল md5sum file.extলিনাক্সের জন্য হতে পারে ।
স্টকবি

নীচে @ স্টকবি কিথের উত্তর সম্ভবত এটি আরও ভাল পরিচালনা করতে চলেছে। আমি সম্মত হই, পাওয়ারশেলের সাথে কিছু ত্রুটি রয়েছে।
vcsjones

5
আমি ভ্যানিলা পাওয়ারশেলটি কোনও এক্সটেনশান ছাড়াই ইনস্টল করেছি, সুতরাং আমি এর পরিবর্তে একটি কমান্ড-লাইন এমডি 5সাম ক্লোনটি ডাউনলোড করেছি এবং এটি দুর্দান্ত কাজ করে। আমি মাইক্রোসফ্টের জিনিস পছন্দ করতে চাই, তবে আমি ঠিক পারি না।
স্টকবি

23
@ স্টকবি ভিসিএস জোনসের পদ্ধতিটি বাফার হয় না ... = বড় ফাইলের জন্য খুব স্মৃতি মেমরি। আমি আপনাকে স্ট্রিমগুলির সাথে কাজ করার পরামর্শ দিচ্ছি: $hash = [System.BitConverter]::ToString($md5.ComputeHash([System.IO.File]::Open("$someFilePath",[System.IO.Filemode]::Open, [System.IO.FileAccess]::Read)))এটি আপনাকে কম স্মৃতি ব্যবহার এবং 2 জিবি সীমা দেয় না
জোশিপোভিচ

20
@ প্রিয় যা অনির্দিষ্টকালের জন্য স্ট্রিমটি উন্মুক্ত রাখে, সুতরাং পাওয়ারশেল বন্ধ না হওয়া পর্যন্ত আপনি ফাইলটি মুছতে পারবেন না। $stream = [System.IO.File]::Open("$someFilePath",[System.IO.Filemode]::Open, [System.IO.FileAccess]::Read)তারপর $hash = [System.BitConverter]::ToString($md5.ComputeHash($stream))তারপর$stream.Close()
জো Amenta

57

আপনি যদি পাওয়ারশেল সম্প্রদায় এক্সটেনশনগুলি ব্যবহার করেন তবে একটি গেট-হ্যাশ কমান্ডলেট রয়েছে যা এটি সহজেই এটি করতে পারে:

C:\PS> "hello world" | Get-Hash -Algorithm MD5


Algorithm: MD5


Path       :
HashString : E42B054623B3799CB71F0883900F2764

10
পাওয়ার-হ্যাশ পাওয়ারশেল সম্প্রদায় এক্সটেনশনগুলি থেকে আসে। আপনি যখন প্যাকেজটি ব্যবহার করতে পারবেন না বা ব্যবহার করবেন না তারা Get-FileHashভ্যানিলা পাওয়ারশেল ৪.০ এ একটি সেমিডলেট যুক্ত করেছেন । ভিডি টেকনেট
টমাসজ কুডজিও

মনে রাখবেন যে এটি (এবং সম্ভবত বেশিরভাগ PS সমাধানগুলি) স্ট্রিংটিকে ইউটিএফ -16 (লিটল-এন্ডিয়ান?) হিসাবে এনকোড করে।
খ্রিস্টান মান

পাওয়ারশেল সম্প্রদায় সম্প্রসারণের লিঙ্কটি কোডপ্লেক্স সংরক্ষণাগারটিতে পুনর্নির্দেশ করে (2017 সালে কোডপ্লেক্স বন্ধ হয়ে গেছে)। সম্ভবত গিটহাবের একটিতে পরিবর্তন ? (গিটহাবের নতুন মাস্টার লোকেশন?)
পিটার মর্টেনসেন

16

এখানে দুটি লাইন রয়েছে, কেবল # 2 লাইনে "হ্যালো" পরিবর্তন করুন:

PS C:\> [Reflection.Assembly]::LoadWithPartialName("System.Web")
PS C:\> [System.Web.Security.FormsAuthentication]::HashPasswordForStoringInConfigFile("hello", "MD5")

1
এর ফলস্বরূপ আমি গৃহীত উত্তরের সাথে প্রাপ্ত আউটপুটটির সমান হয় না। এটি STRING "হ্যালো" এর হ্যাশ গণনা করে, এমন কোনও ফাইলের নয় যা আমি "হ্যালো" এর সাথে প্রতিস্থাপন করব এমন কোনও পথ দ্বারা সংজ্ঞায়িত হবে, সঠিক?
রবার্টজি

1
সত্য, তবে ওপি কোনও ফাইল চাইেনি, এবং আমি এখানে স্ট্রিং সমাধান খুঁজছি
ক্রিস এফ ক্যারল

16

আমি এখানে একটি ফাংশন ব্যবহার করি যা আপেক্ষিক এবং পরম পাথ পরিচালনা করে:

function md5hash($path)
{
    $fullPath = Resolve-Path $path
    $md5 = new-object -TypeName System.Security.Cryptography.MD5CryptoServiceProvider
    $file = [System.IO.File]::Open($fullPath,[System.IO.Filemode]::Open, [System.IO.FileAccess]::Read)
    try {
        [System.BitConverter]::ToString($md5.ComputeHash($file))
    } finally {
        $file.Dispose()
    }
}

শেষ পর্যন্ত ব্লকটি ব্যবহারের পরামর্শের জন্য ReadAllBytes () এর পরিবর্তে ওপেন () ব্যবহার করার পরামর্শের জন্য উপরের @ বিজ্ঞাপনকে ধন্যবাদ এবং ধন্যবাদ


2
এই পদ্ধতির ভিসিএস জোন্স এবং কেথের চেয়ে ভাল আইএমএইচও কারণ এটি 2 জিবি-র চেয়ে বড় ফাইলগুলির ইনপুট নিতে পারে এবং এর জন্য কোনও এক্সটেনশন বা পাওয়ারশেল ৪.০ প্রয়োজন হয় না।
চিরাগ ভাটিয়া

1
Disposeকলের জন্য একটি হওয়া উচিত finallyব্লক।
jpmc26

12

উইন্ডোতে 2003 সালের পূর্বনির্ধারিত ডিফল্টরূপে আরও একটি বিল্ট-ইন কমান্ড হ'ল সার্টুইটিল , অবশ্যই পাওয়ারশেল থেকেও অনুরোধ করা যেতে পারে।

CertUtil -hashfile file.foo MD5

(ক্যাভিয়েট: এমডি 5 সর্বাধিক দৃ all়তার জন্য সমস্ত ক্যাপের মধ্যে থাকা উচিত)


1
FipsAlgorithmPolicyসক্ষম করা হলে এটি একটি ভাল বিকল্প ।
উইলিয়াম জন হোল্ডেন

9

কমপিউটহ্যাশ () ব্যবহার করে অনলাইনে প্রচুর উদাহরণ রয়েছে। কোনও নেটওয়ার্ক সংযোগে চলার সময় আমার পরীক্ষাটি দেখায় যে এটি খুব ধীর ছিল। নীচের স্নিপেটটি আমার জন্য আরও দ্রুত চলে, তবে আপনার মাইলেজটি বিভিন্ন রকম হতে পারে:

$md5 = [System.Security.Cryptography.MD5]::Create("MD5")
$fd = [System.IO.File]::OpenRead($file)
$buf = New-Object byte[] (1024*1024*8) # 8 MB buffer
while (($read_len = $fd.Read($buf,0,$buf.length)) -eq $buf.length){
    $total += $buf.length
    $md5.TransformBlock($buf,$offset,$buf.length,$buf,$offset)
    Write-Progress -Activity "Hashing File" `
       -Status $file -percentComplete ($total/$fd.length * 100)
}

# Finalize the last read
$md5.TransformFinalBlock($buf, 0, $read_len)
$hash = $md5.Hash

# Convert hash bytes to a hexadecimal formatted string
$hash | foreach { $hash_txt += $_.ToString("x2") }
Write-Host $hash_txt

1
আপনার পদ্ধতিটি অন্যান্য উত্তরগুলি থেকে ReadAllBytes এর 2Gb সীমাটি অতিক্রম করেছে, যা আমার প্রয়োজন ঠিক তাই।
জয়

write-progressলাইনের ব্যাকটিকটি কী করে ? সিনট্যাক্স হাইলাইটারটি এটি পছন্দ করছে বলে মনে হয় না।
mwfearnley

1
@ এমডব্লিউনারলি ব্যাকটিক লাইন ধারাবাহিকতা সক্ষম করে। ব্লগস.টিচনেট.মাইক্রোসফট.
হিরিস্ক্রিপ্টিংগুই /

6

এই সাইটের উদাহরণ রয়েছে: MD5 চেকসামগুলির জন্য পাওয়ারশেল ব্যবহার করা । এটি হ্যাশ গণনা করার জন্য MD5 হ্যাশ অ্যালগরিদমের একটি উদাহরণ ইনস্ট্যান্ট করতে .NET ফ্রেমওয়ার্ক ব্যবহার করে।

স্টিফেনের মন্তব্য সংযুক্ত করে নিবন্ধের কোডটি এখানে:

param
(
  $file
)

$algo = [System.Security.Cryptography.HashAlgorithm]::Create("MD5")
$stream = New-Object System.IO.FileStream($Path, [System.IO.FileMode]::Open,
    [System.IO.FileAccess]::Read)

$md5StringBuilder = New-Object System.Text.StringBuilder
$algo.ComputeHash($stream) | % { [void] $md5StringBuilder.Append($_.ToString("x2")) }
$md5StringBuilder.ToString()

$stream.Dispose()

1
পঠনযোগ্য ফাইলগুলির জন্য এটি কাজ করে না তবে ভাল! এটির জন্য দরকার $ স্ট্রিম = নতুন-অবজেক্ট সিস্টেম.আইও.ফায়ার স্ট্রিম ($ পথ, [সিস্টেম.আইও.ফিলমোড] :: ওপেন, [সিস্টেম.আইও.ফাইলে অ্যাক্সেস] :: পড়ুন)
স্টিফেন কনোলি

1
লিঙ্কটি যদি কখনও মারা যায় তবে উত্তরটি যথেষ্ট অকেজো হবে। stackoverflow.com/help/how-to-answer
আমি মনিকার সাথে আছি

1
আমি যা অনুমান করি তার প্রতিক্রিয়ায় আমি আপনার নিচের দিকে ছিলাম, আমি এখানে নিবন্ধ থেকে কোডটি কেটে পেস্ট করেছি। আমি গত বছর এটি করিনি, কারণ আমি অনুভব করেছি এটি চুরির ঘটনা was স্টিফেনের কেবল পঠনযোগ্য অভিযোজন যুক্ত করে আমার মনে হয়েছিল এটি পোস্ট করার উপযুক্ত।
নিউন্টাপির

@ নোনতাপীর কেবল এটিই বলছেন: শব্দটি (বা অভিযোজন সহ) কিছু পোস্ট করা যদি আপনি উত্সটি স্বীকার না করেন তবে কেবল চৌর্যবৃত্তি হয়। কপিরাইট (আইনত বা নৈতিকভাবে) একটি পৃথক সমস্যা, তবে বেশিরভাগ কোড স্নিপেটের সাথে আমি এটি নিয়ে উদ্বিগ্ন হব না।
mwfearnley

6

গ্রহণযোগ্য উত্তরে যেমন বলা হয়েছে, Get-FileHashফাইলগুলি ব্যবহার করা সহজ তবে স্ট্রিং সহ এটি ব্যবহার করাও সম্ভব:

$s = "asdf"
Get-FileHash -InputStream ([System.IO.MemoryStream]::New([System.Text.Encoding]::ASCII.GetBytes($s)))

5

এখন একটি গেট-ফাইলহ্যাশ ফাংশন রয়েছে যা খুব সহজ।

PS C:\> Get-FileHash C:\Users\Andris\Downloads\Contoso8_1_ENT.iso -Algorithm SHA384 | Format-List

Algorithm : SHA384
Hash      : 20AB1C2EE19FC96A7C66E33917D191A24E3CE9DAC99DB7C786ACCE31E559144FEAFC695C58E508E2EBBC9D3C96F21FA3
Path      : C:\Users\Andris\Downloads\Contoso8_1_ENT.iso

শুধু পরিবর্তন SHA384করতে MD5

উদাহরণ পাওয়ারশেল 5.1 এর অফিসিয়াল ডকুমেন্টেশন থেকে । ডকুমেন্টেশনের আরও উদাহরণ রয়েছে।


3

আপনি যদি মাইক্রোসফ্ট থেকে ফাইল চেকসাম ইন্টিগ্রিটি ভেরিফায়ার (এফসিআইভি) ডাউনলোড করেন তবে এটি ওয়ান-লাইনারে পরিণত হয়।

আমি এখান থেকে এফসিআইভি ডাউনলোড করেছি: ফাইল চেকসাম ইন্টিগ্রিটি ভেরিফায়ার ইউটিলিটির উপলভ্যতা এবং বিবরণ

নিম্নলিখিত কমান্ড চালান। আমার কাছে পরীক্ষা করার জন্য দশটি ফাইল ছিল।

Get-ChildItem WTAM*.tar | % {.\fciv $_.Name}

3

পাওয়ারশেল ওয়ান-লাইনার্স (স্ট্রিং থেকে হ্যাশ)

MD5

([System.BitConverter]::ToString((New-Object -TypeName System.Security.Cryptography.MD5CryptoServiceProvider).ComputeHash((New-Object -TypeName System.Text.UTF8Encoding).GetBytes("Hello, World!")))).Replace("-","")

SHA1 এ

([System.BitConverter]::ToString((New-Object -TypeName System.Security.Cryptography.SHA1CryptoServiceProvider).ComputeHash((New-Object -TypeName System.Text.UTF8Encoding).GetBytes("Hello, World!")))).Replace("-","")

ভিন্ন ধরনের SHA256

([System.BitConverter]::ToString((New-Object -TypeName System.Security.Cryptography.SHA256CryptoServiceProvider).ComputeHash((New-Object -TypeName System.Text.UTF8Encoding).GetBytes("Hello, World!")))).Replace("-","")

SHA384

([System.BitConverter]::ToString((New-Object -TypeName System.Security.Cryptography.SHA384CryptoServiceProvider).ComputeHash((New-Object -TypeName System.Text.UTF8Encoding).GetBytes("Hello, World!")))).Replace("-","")

SHA512

([System.BitConverter]::ToString((New-Object -TypeName System.Security.Cryptography.SHA512CryptoServiceProvider).ComputeHash((New-Object -TypeName System.Text.UTF8Encoding).GetBytes("Hello, World!")))).Replace("-","")

1

এটি একটি দূরবর্তী কম্পিউটারে একটি ফাইলের জন্য একটি MD5 হ্যাশ ফিরিয়ে দেবে:

Invoke-Command -ComputerName RemoteComputerName -ScriptBlock {
    $fullPath = Resolve-Path 'c:\Program Files\Internet Explorer\iexplore.exe'
    $md5 = new-object -TypeName System.Security.Cryptography.MD5CryptoServiceProvider
    $file = [System.IO.File]::OpenRead($fullPath)
    $hash = [System.BitConverter]::ToString($md5.ComputeHash($file))
    $hash -replace "-", ""
    $file.Dispose()
}

1

ডান-ক্লিক মেনু বিকল্পের জন্য নমুনা:

[HKEY_CLASSES_ROOT\*\shell\SHA1 PS check\command]
@="C:\\Windows\\system32\\WindowsPowerShell\\v1.0\\powershell.exe -NoExit -Command Get-FileHash -Algorithm SHA1 '%1'"

0

এখানে SHA256 ফিঙ্গারপ্রিন্ট যাচাই করার চেষ্টা করার একটি দুর্দান্ত মুদ্রণের উদাহরণ রয়েছে। আমি পাওয়ারশেল ভি 4 ব্যবহার করে জিপিজি 4উইন v3.0.3 ডাউনলোড করেছি (প্রয়োজনীয় Get-FileHash)।

Https://www.gpg4win.org/download.html থেকে প্যাকেজটি ডাউনলোড করুন , পাওয়ারশেল খুলুন, ডাউনলোড পৃষ্ঠা থেকে হ্যাশটি ধরুন এবং চালান:

cd ${env:USERPROFILE}\Downloads
$file = "gpg4win-3.0.3.exe"

# Set $hash to the hash reference from the download page:
$hash = "477f56212ee60cc74e0c5e5cc526cec52a069abff485c89c2d57d1b4b6a54971"

# If you have an MD5 hash: # $hashAlgo="MD5"
$hashAlgo = "SHA256"

$computed_hash = (Get-FileHash -Algorithm $hashAlgo $file).Hash.ToUpper()
if ($computed_hash.CompareTo($hash.ToUpper()) -eq 0 ) {
    Write-Output "Hash matches for file $file" 
} 
else { 
    Write-Output ("Hash DOES NOT match for file {0}: `nOriginal hash: {1} `nComputed hash: {2}" -f ($file, $hash.ToUpper(), $computed_hash)) 
}

আউটপুট:

Hash matches for file gpg4win-3.0.3.exe

0

ফাইলের যথাযথ চেকসাম উভয়কেই কম্পিউটিংয়ের সাথে এখানে একটি লাইন-কমান্ডের উদাহরণ রয়েছেআপনি যেমন ডাউনলোড করেছেন কেবল যেমন এবং এটির মূল প্রকাশিত চেকসামের সাথে তুলনা করে ।

উদাহরণস্বরূপ, আমি অ্যাপাচি জেমেটার প্রকল্প থেকে ডাউনলোড করার জন্য একটি উদাহরণ লিখেছি । এক্ষেত্রে আপনার রয়েছে:

  1. বাইনারি ফাইল ডাউনলোড
  2. ফর্ম্যাটটিতে একটি স্ট্রিং হিসাবে file.md5 এ প্রকাশিত মূলটির চেকসাম :

3a84491f10fb7b147101cf3926c4a855 * অ্যাপাচি- জমিটার 4.0.zip

তারপরে এই পাওয়ারশেল কমান্ডটি ব্যবহার করে আপনি ডাউনলোড করা ফাইলটির অখণ্ডতা যাচাই করতে পারবেন:

PS C:\Distr> (Get-FileHash .\apache-jmeter-4.0.zip -Algorithm MD5).Hash -eq (Get-Content .\apache-jmeter-4.0.zip.md5 | Convert-String -Example "hash path=hash")

আউটপুট:

True

ব্যাখ্যা:

-eqঅপারেটরের প্রথম অপারেন্ডটি ফাইলের জন্য চেকসামটি গণনার ফলাফল:

(Get-FileHash .\apache-jmeter-4.0.zip -Algorithm MD5).Hash

দ্বিতীয় অপারেন্ড হ'ল প্রকাশিত চেকসাম মান। আমরা প্রথমে ফাইল.এমডি 5 এর সামগ্রী পাই যা একটি স্ট্রিং এবং তারপরে আমরা স্ট্রিং বিন্যাসের ভিত্তিতে হ্যাশ মানটি বের করি:

Get-Content .\apache-jmeter-4.0.zip.md5 | Convert-String -Example "hash path=hash"

এই কমান্ড কাজের জন্য ফাইল এবং file.md5 উভয়ই একই ফোল্ডারে থাকতে হবে।


0

এটি একটি সামঞ্জস্যপূর্ণ হ্যাশ মান পেতে আমি ব্যবহার করি:

function New-CrcTable {
    [uint32]$c = $null
    $crcTable = New-Object 'System.Uint32[]' 256

    for ($n = 0; $n -lt 256; $n++) {
        $c = [uint32]$n
        for ($k = 0; $k -lt 8; $k++) {
            if ($c -band 1) {
                $c = (0xEDB88320 -bxor ($c -shr 1))
            }
            else {
                $c = ($c -shr 1)
            }
        }
        $crcTable[$n] = $c
    }

    Write-Output $crcTable
}

function Update-Crc ([uint32]$crc, [byte[]]$buffer, [int]$length, $crcTable) {
    [uint32]$c = $crc

    for ($n = 0; $n -lt $length; $n++) {
        $c = ($crcTable[($c -bxor $buffer[$n]) -band 0xFF]) -bxor ($c -shr 8)
    }

    Write-Output $c
}

function Get-CRC32 {
    <#
        .SYNOPSIS
            Calculate CRC.
        .DESCRIPTION
            This function calculates the CRC of the input data using the CRC32 algorithm.
        .EXAMPLE
            Get-CRC32 $data
        .EXAMPLE
            $data | Get-CRC32
        .NOTES
            C to PowerShell conversion based on code in https://www.w3.org/TR/PNG/#D-CRCAppendix

            Author: Øyvind Kallstad
            Date: 06.02.2017
            Version: 1.0
        .INPUTS
            byte[]
        .OUTPUTS
            uint32
        .LINK
            https://communary.net/
        .LINK
            https://www.w3.org/TR/PNG/#D-CRCAppendix

    #>
    [CmdletBinding()]
    param (
        # Array of Bytes to use for CRC calculation
        [Parameter(Position = 0, ValueFromPipeline = $true)]
        [ValidateNotNullOrEmpty()]
        [byte[]]$InputObject
    )

    $dataArray = @()
    $crcTable = New-CrcTable
    foreach ($item  in $InputObject) {
        $dataArray += $item
    }
    $inputLength = $dataArray.Length
    Write-Output ((Update-Crc -crc 0xffffffffL -buffer $dataArray -length $inputLength -crcTable $crcTable) -bxor 0xffffffffL)
}

function GetHash() {
    [CmdletBinding()]
    param(
        [Parameter(Position = 0, ValueFromPipeline = $true)]
        [ValidateNotNullOrEmpty()]
        [string]$InputString
    )

    $bytes = [System.Text.Encoding]::UTF8.GetBytes($InputString)
    $hasCode = Get-CRC32 $bytes
    $hex = "{0:x}" -f $hasCode
    return $hex
}

function Get-FolderHash {
    [CmdletBinding()]
    param(
        [Parameter(Position = 0, ValueFromPipeline = $true)]
        [ValidateNotNullOrEmpty()]
        [string]$FolderPath
    )

    $FolderContent = New-Object System.Collections.ArrayList
    Get-ChildItem $FolderPath -Recurse | Where-Object {
        if ([System.IO.File]::Exists($_)) {
            $FolderContent.AddRange([System.IO.File]::ReadAllBytes($_)) | Out-Null
        }
    }

    $hasCode = Get-CRC32 $FolderContent
    $hex = "{0:x}" -f $hasCode
    return $hex.Substring(0, 8).ToLower()
}

আপনি কোথা থেকে পাওয়ারশেল কোডটি অনুলিপি করেছেন? https://communary.net/ ?
পিটার মর্টেনসেন

0

প্রদত্ত স্ট্রিংয়ের জন্য এমডি 5 পাওয়ার জন্য আমি এখানে স্নিপেটটি ব্যবহার করছি:

$text = "text goes here..."
$md5  = [Security.Cryptography.MD5CryptoServiceProvider]::new()
$utf8 = [Text.UTF8Encoding]::UTF8
$bytes= $md5.ComputeHash($utf8.GetBytes($text))
$hash = [string]::Concat($bytes.foreach{$_.ToString("x2")}) 
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.