<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="id">
	<id>https://wiki.unissula.ac.id/index.php?action=history&amp;feed=atom&amp;title=Bcrypt</id>
	<title>Bcrypt - Riwayat revisi</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.unissula.ac.id/index.php?action=history&amp;feed=atom&amp;title=Bcrypt"/>
	<link rel="alternate" type="text/html" href="https://wiki.unissula.ac.id/index.php?title=Bcrypt&amp;action=history"/>
	<updated>2026-09-16T15:47:00Z</updated>
	<subtitle>Riwayat revisi halaman ini di wiki</subtitle>
	<generator>MediaWiki 1.46.0</generator>
	<entry>
		<id>https://wiki.unissula.ac.id/index.php?title=Bcrypt&amp;diff=6763&amp;oldid=prev</id>
		<title>Maintenance script: Presentation V4: sitasi, referensi, Math, Wikimedia Commons, dan atribusi</title>
		<link rel="alternate" type="text/html" href="https://wiki.unissula.ac.id/index.php?title=Bcrypt&amp;diff=6763&amp;oldid=prev"/>
		<updated>2026-08-24T14:07:48Z</updated>

		<summary type="html">&lt;p&gt;Presentation V4: sitasi, referensi, Math, Wikimedia Commons, dan atribusi&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw-interface=&quot;&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;id&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Revisi sebelumnya&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revisi per 24 Agustus 2026 14.07&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1&quot;&gt;Baris 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Baris 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&#039;&#039;&#039;bcrypt&#039;&#039;&#039; merupakan fungsi hashing kata sandi yang dirancang oleh dua orang peneliti keamanan komputer [https://www.provos.org/ Niels Provos] dan David Mazières, cipher [[Blowfish (penyandian)|Blowfish]] adalah dasar pembuatan bcrypt, dan disajikan di USENIX pada tahun 1999. bcrypt dapat melindungi dari serangan [[Tabel pelangi|rainbow table]] dengan mengunakan [[Salt (kriptografi)|salt]], selain itu, bcrypt adalah fungsi adaptif: seiring waktu, jumlah iterasi dapat ditingkatkan untuk membuatnya lebih lambat, sehingga tetap aman terhadap serangan pencarian brute-force bahkan dengan meningkatnya daya komputasi.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&#039;&#039;&#039;bcrypt&#039;&#039;&#039; merupakan fungsi hashing kata sandi yang dirancang oleh dua orang peneliti keamanan komputer [https://www.provos.org/ Niels Provos] dan David Mazières, cipher [[Blowfish (penyandian)|Blowfish]] adalah dasar pembuatan bcrypt, dan disajikan di USENIX pada tahun 1999.&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;ref&amp;gt;Niels Provos. [http://www.usenix.org/events/usenix99/provos/provos_html/node1.html A Future-Adaptable Password Scheme]. &#039;&#039;Proceedings of 1999 USENIX Annual Technical Conference&#039;&#039;. 1999. hlm. 81–92.&amp;lt;/ref&amp;gt; &lt;/ins&gt;bcrypt dapat melindungi dari serangan [[Tabel pelangi|rainbow table]] dengan mengunakan [[Salt (kriptografi)|salt]], selain itu, bcrypt adalah fungsi adaptif: seiring waktu, jumlah iterasi dapat ditingkatkan untuk membuatnya lebih lambat, sehingga tetap aman terhadap serangan pencarian brute-force bahkan dengan meningkatnya daya komputasi.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Fungsi bcrypt merupakan algoritma hash password dasar untuk [[OpenBSD]] &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt; &lt;/del&gt;dan sistem lain termasuk beberapa [[distribusi Linux]] seperti SUSE Linux .&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Fungsi bcrypt merupakan algoritma hash password dasar untuk [[OpenBSD]] &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;ref&amp;gt;[//cvsweb.openbsd.org/cgi-bin/cvsweb/src/lib/libc/crypt/bcrypt.c Commit of first work to repo]. 13 Feb 1997.&amp;lt;/ref&amp;gt; &lt;/ins&gt;dan sistem lain termasuk beberapa [[distribusi Linux]] seperti SUSE Linux .&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;ref&amp;gt;[https://www.suse.com/support/security/advisories/2011_35_blowfish.html SUSE Security Announcement: (SUSE-SA:2011:035)]. 23 August 2011.&amp;lt;/ref&amp;gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;bcrypt dapat diimplementasikan pada bahasa pemrograman PHP, Python, JavaScript, C, C ++, C #, Go, Java, Elixir, Perl, Ruby dan bahasa lain&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;bcrypt dapat diimplementasikan pada bahasa pemrograman PHP, Python, JavaScript, C, C ++, C #, Go,&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;ref&amp;gt;[https://godoc.org/golang.org/x/crypto/bcrypt Package bcrypt]. &#039;&#039;godoc.org&#039;&#039;.&amp;lt;/ref&amp;gt; &lt;/ins&gt;Java,&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;ref&amp;gt;[http://www.mindrot.org/projects/jBCrypt/ jBCrypt - strong password hashing for Java]. &#039;&#039;www.mindrot.org&#039;&#039;.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;[https://github.com/patrickfav/bcrypt bcrypt - A Java standalone implementation of the bcrypt password hash function]. &#039;&#039;github.com&#039;&#039;.&amp;lt;/ref&amp;gt; &lt;/ins&gt;Elixir,&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;ref&amp;gt;David Whitlock. [https://github.com/riverrun/bcrypt_elixir Bcrypt Elixir: Bcrypt password hashing algorithm for Elixir]. &#039;&#039;GitHub&#039;&#039;. riverrun.&amp;lt;/ref&amp;gt; &lt;/ins&gt;Perl,&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;ref&amp;gt;Donald Stufft. [https://github.com/pyca/bcrypt/ bcrypt: Modern password hashing for your software and your servers].&amp;lt;/ref&amp;gt; &lt;/ins&gt;Ruby dan bahasa lain&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Algortima ==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Algortima ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Algoritma bcrypt adalah hasil dari enkripsi teks &#039;&#039;&quot;OrpheanBeholderScryDoubt&quot;&#039;&#039; 64 kali menggunakan [[Blowfish (penyandian)|Blowfish]] . Dalam bcrypt fungsi biasa key setup pada Blowfish digantikan dengan fungsi expensive key setup (EksBlowfishSetup)&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Algoritma bcrypt adalah hasil dari enkripsi teks &#039;&#039;&quot;OrpheanBeholderScryDoubt&quot;&#039;&#039; 64 kali menggunakan [[Blowfish (penyandian)|Blowfish]] . Dalam bcrypt fungsi biasa key setup pada Blowfish digantikan dengan fungsi expensive key setup (EksBlowfishSetup) &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt; &lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  &amp;#039;&amp;#039;&amp;#039;Function&amp;#039;&amp;#039;&amp;#039; bcrypt&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  &amp;#039;&amp;#039;&amp;#039;Function&amp;#039;&amp;#039;&amp;#039; bcrypt&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;     &amp;#039;&amp;#039;&amp;#039;Input:&amp;#039;&amp;#039;&amp;#039;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;     &amp;#039;&amp;#039;&amp;#039;Input:&amp;#039;&amp;#039;&amp;#039;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l12&quot;&gt;Baris 12:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Baris 12:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;        salt:     array of Bytes (16 bytes)           random salt&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;        salt:     array of Bytes (16 bytes)           random salt&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;        password: array of Bytes (1..72 bytes)        UTF-8 encoded password&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;        password: array of Bytes (1..72 bytes)        UTF-8 encoded password&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;     &#039;&#039;&#039;Output:&#039;&#039;&#039;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;     &#039;&#039;&#039;Output:&#039;&#039;&#039;  &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;        hash:     array of Bytes (24 bytes)&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;        hash:     array of Bytes (24 bytes)&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;     //Initialize Blowfish state with expensive key setup algorithm&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;     //Initialize Blowfish state with expensive key setup algorithm&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;     &#039;&#039;state&#039;&#039;  &amp;lt;- EksBlowfishSetup(&#039;&#039;cost&#039;&#039;, &#039;&#039;salt&#039;&#039;, &#039;&#039;password&#039;&#039;)&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;     &#039;&#039;state&#039;&#039;  &amp;lt;- EksBlowfishSetup(&#039;&#039;cost&#039;&#039;, &#039;&#039;salt&#039;&#039;, &#039;&#039;password&#039;&#039;) &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;  &lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;     //Repeatedly encrypt the text &amp;quot;OrpheanBeholderScryDoubt&amp;quot; 64 times&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;     //Repeatedly encrypt the text &amp;quot;OrpheanBeholderScryDoubt&amp;quot; 64 times&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l33&quot;&gt;Baris 33:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Baris 33:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;        salt:     array of Bytes (16 bytes)           random salt&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;        salt:     array of Bytes (16 bytes)           random salt&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;        password: array of Bytes (1..72 bytes)        UTF-8 encoded password&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;        password: array of Bytes (1..72 bytes)        UTF-8 encoded password&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;     &#039;&#039;&#039;Output:&#039;&#039;&#039;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;     &#039;&#039;&#039;Output:&#039;&#039;&#039;  &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;        state:    opaque BlowFish state structure&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;        state:    opaque BlowFish state structure&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l51&quot;&gt;Baris 51:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Baris 51:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;        salt:     array of Bytes (16 bytes)           random salt&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;        salt:     array of Bytes (16 bytes)           random salt&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;        password: array of Bytes (1..72 bytes)        UTF-8 encoded password&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;        password: array of Bytes (1..72 bytes)        UTF-8 encoded password&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;     &#039;&#039;&#039;Output:&#039;&#039;&#039;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;     &#039;&#039;&#039;Output:&#039;&#039;&#039;  &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;        state:    opaque BlowFish state structure&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;        state:    opaque BlowFish state structure&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l78&quot;&gt;Baris 78:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Baris 78:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Referensi ==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Referensi ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;references /&amp;gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Sumber dan atribusi ==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Sumber dan atribusi ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Konten artikel ini diadaptasi dari [https://id.wikipedia.org/w/index.php?title=Bcrypt&amp;amp;oldid=28365321 Wikipedia bahasa Indonesia], revisi 28365321 (2025-11-07T03:45:38Z), yang tersedia berdasarkan lisensi Creative Commons Atribusi-BerbagiSerupa (CC BY-SA). Mohon gunakan konten ini secara bijak serta sesuai dengan ketentuan lisensi yang berlaku.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Konten artikel ini diadaptasi dari [https://id.wikipedia.org/w/index.php?title=Bcrypt&amp;amp;oldid=28365321 Wikipedia bahasa Indonesia], revisi 28365321 (2025-11-07T03:45:38Z), yang tersedia berdasarkan lisensi Creative Commons Atribusi-BerbagiSerupa (CC BY-SA). Mohon gunakan konten ini secara bijak serta sesuai dengan ketentuan lisensi yang berlaku.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;!-- WIKI_UNISSULA_PRESENTATION_V4 --&amp;gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Maintenance script</name></author>
	</entry>
	<entry>
		<id>https://wiki.unissula.ac.id/index.php?title=Bcrypt&amp;diff=6363&amp;oldid=prev</id>
		<title>Maintenance script: Impor teks terkontrol dari Wikipedia bahasa Indonesia; revisi 28365321; atribusi sumber disertakan.</title>
		<link rel="alternate" type="text/html" href="https://wiki.unissula.ac.id/index.php?title=Bcrypt&amp;diff=6363&amp;oldid=prev"/>
		<updated>2026-08-24T13:41:18Z</updated>

		<summary type="html">&lt;p&gt;Impor teks terkontrol dari Wikipedia bahasa Indonesia; revisi 28365321; atribusi sumber disertakan.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Halaman baru&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;bcrypt&amp;#039;&amp;#039;&amp;#039; merupakan fungsi hashing kata sandi yang dirancang oleh dua orang peneliti keamanan komputer [https://www.provos.org/ Niels Provos] dan David Mazières, cipher [[Blowfish (penyandian)|Blowfish]] adalah dasar pembuatan bcrypt, dan disajikan di USENIX pada tahun 1999. bcrypt dapat melindungi dari serangan [[Tabel pelangi|rainbow table]] dengan mengunakan [[Salt (kriptografi)|salt]], selain itu, bcrypt adalah fungsi adaptif: seiring waktu, jumlah iterasi dapat ditingkatkan untuk membuatnya lebih lambat, sehingga tetap aman terhadap serangan pencarian brute-force bahkan dengan meningkatnya daya komputasi.&lt;br /&gt;
&lt;br /&gt;
Fungsi bcrypt merupakan algoritma hash password dasar untuk [[OpenBSD]]  dan sistem lain termasuk beberapa [[distribusi Linux]] seperti SUSE Linux .&lt;br /&gt;
&lt;br /&gt;
bcrypt dapat diimplementasikan pada bahasa pemrograman PHP, Python, JavaScript, C, C ++, C #, Go, Java, Elixir, Perl, Ruby dan bahasa lain&lt;br /&gt;
&lt;br /&gt;
== Algortima ==&lt;br /&gt;
Algoritma bcrypt adalah hasil dari enkripsi teks &amp;#039;&amp;#039;&amp;quot;OrpheanBeholderScryDoubt&amp;quot;&amp;#039;&amp;#039; 64 kali menggunakan [[Blowfish (penyandian)|Blowfish]] . Dalam bcrypt fungsi biasa key setup pada Blowfish digantikan dengan fungsi expensive key setup (EksBlowfishSetup)&lt;br /&gt;
 &amp;#039;&amp;#039;&amp;#039;Function&amp;#039;&amp;#039;&amp;#039; bcrypt&lt;br /&gt;
    &amp;#039;&amp;#039;&amp;#039;Input:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
       cost:     Number (4..31)                      log&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;(Iterations). e.g. 12 ==&amp;gt; 2&amp;lt;sup&amp;gt;12&amp;lt;/sup&amp;gt; = 4,096 iterations&lt;br /&gt;
       salt:     array of Bytes (16 bytes)           random salt&lt;br /&gt;
       password: array of Bytes (1..72 bytes)        UTF-8 encoded password&lt;br /&gt;
    &amp;#039;&amp;#039;&amp;#039;Output:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
       hash:     array of Bytes (24 bytes)&lt;br /&gt;
&lt;br /&gt;
    //Initialize Blowfish state with expensive key setup algorithm&lt;br /&gt;
    &amp;#039;&amp;#039;state&amp;#039;&amp;#039;  &amp;lt;- EksBlowfishSetup(&amp;#039;&amp;#039;cost&amp;#039;&amp;#039;, &amp;#039;&amp;#039;salt&amp;#039;&amp;#039;, &amp;#039;&amp;#039;password&amp;#039;&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
    //Repeatedly encrypt the text &amp;quot;OrpheanBeholderScryDoubt&amp;quot; 64 times&lt;br /&gt;
    &amp;#039;&amp;#039;ctext&amp;#039;&amp;#039;  &amp;lt;- &amp;#039;&amp;#039;&amp;quot;OrpheanBeholderScryDoubt&amp;quot;&amp;#039;&amp;#039;  //24 bytes ==&amp;gt; three 64-bit blocks&lt;br /&gt;
    &amp;#039;&amp;#039;&amp;#039;repeat&amp;#039;&amp;#039;&amp;#039; (64)&lt;br /&gt;
       &amp;#039;&amp;#039;ctext&amp;#039;&amp;#039;  EncryptECB(&amp;#039;&amp;#039;state&amp;#039;&amp;#039;, &amp;#039;&amp;#039;ctext&amp;#039;&amp;#039;) //encrypt using standard Blowfish in ECB mode&lt;br /&gt;
&lt;br /&gt;
    //24-byte &amp;lt;- &amp;#039;&amp;#039;ctext&amp;#039;&amp;#039; is resulting password hash&lt;br /&gt;
    &amp;#039;&amp;#039;&amp;#039;return&amp;#039;&amp;#039;&amp;#039; Concatenate(&amp;#039;&amp;#039;cost&amp;#039;&amp;#039;, &amp;#039;&amp;#039;salt&amp;#039;&amp;#039;, &amp;#039;&amp;#039;ctext&amp;#039;&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
=== Expensive key setup ===&lt;br /&gt;
Algoritma bcrypt sangat bergantung pada algoritma key setup &amp;quot;Eksblowfish&amp;quot;, berikut algoritmanya:&lt;br /&gt;
 &amp;#039;&amp;#039;&amp;#039;Function&amp;#039;&amp;#039;&amp;#039; EksBlowfishSetup&lt;br /&gt;
    &amp;#039;&amp;#039;&amp;#039;Input:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
       cost:     Number (4..31)                      log&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;(Iterations). e.g. 12 ==&amp;gt; 2&amp;lt;sup&amp;gt;12&amp;lt;/sup&amp;gt; = 4,096 iterations&lt;br /&gt;
       salt:     array of Bytes (16 bytes)           random salt&lt;br /&gt;
       password: array of Bytes (1..72 bytes)        UTF-8 encoded password&lt;br /&gt;
    &amp;#039;&amp;#039;&amp;#039;Output:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
       state:    opaque BlowFish state structure&lt;br /&gt;
&lt;br /&gt;
    &amp;#039;&amp;#039;state&amp;#039;&amp;#039;  &amp;lt;- InitialState()&lt;br /&gt;
    &amp;#039;&amp;#039;state&amp;#039;&amp;#039;  &amp;lt;- ExpandKey(&amp;#039;&amp;#039;state&amp;#039;&amp;#039;, &amp;#039;&amp;#039;salt&amp;#039;&amp;#039;, &amp;#039;&amp;#039;password&amp;#039;&amp;#039;)&lt;br /&gt;
    &amp;#039;&amp;#039;&amp;#039;repeat&amp;#039;&amp;#039;&amp;#039; (2&amp;lt;sup&amp;gt;&amp;#039;&amp;#039;cost&amp;#039;&amp;#039;&amp;lt;/sup&amp;gt;)&lt;br /&gt;
       &amp;#039;&amp;#039;state&amp;#039;&amp;#039;  &amp;lt;- ExpandKey(state, 0, password)&lt;br /&gt;
       &amp;#039;&amp;#039;state&amp;#039;&amp;#039;  &amp;lt;- ExpandKey(state, 0, salt)&lt;br /&gt;
&lt;br /&gt;
     &amp;#039;&amp;#039;&amp;#039;return&amp;#039;&amp;#039;&amp;#039; &amp;#039;&amp;#039;state&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
=== Expand key ===&lt;br /&gt;
Berikut algoritma fungsi ExpandKey&lt;br /&gt;
 &amp;#039;&amp;#039;&amp;#039;Function&amp;#039;&amp;#039;&amp;#039; ExpandKey(&amp;#039;&amp;#039;state&amp;#039;&amp;#039;, &amp;#039;&amp;#039;salt&amp;#039;&amp;#039;, &amp;#039;&amp;#039;password&amp;#039;&amp;#039;)&lt;br /&gt;
    &amp;#039;&amp;#039;&amp;#039;Input:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
       state:    Opaque BlowFish state structure     Internally contains P-array and S-box entries&lt;br /&gt;
       salt:     array of Bytes (16 bytes)           random salt&lt;br /&gt;
       password: array of Bytes (1..72 bytes)        UTF-8 encoded password&lt;br /&gt;
    &amp;#039;&amp;#039;&amp;#039;Output:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
       state:    opaque BlowFish state structure&lt;br /&gt;
&lt;br /&gt;
    //Mix password into the internal P-array of &amp;#039;&amp;#039;state&amp;#039;&amp;#039;&lt;br /&gt;
    &amp;#039;&amp;#039;&amp;#039;for&amp;#039;&amp;#039;&amp;#039; &amp;#039;&amp;#039;n&amp;#039;&amp;#039;  &amp;lt;- 1 &amp;#039;&amp;#039;&amp;#039;to&amp;#039;&amp;#039;&amp;#039; 18 &amp;#039;&amp;#039;&amp;#039;do&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
       P&amp;lt;sub&amp;gt;n&amp;lt;/sub&amp;gt;  &amp;lt;- P&amp;lt;sub&amp;gt;n&amp;lt;/sub&amp;gt; xor &amp;#039;&amp;#039;password&amp;#039;&amp;#039;[32(n-1)..32n-1] //treat the password as cyclic&lt;br /&gt;
&lt;br /&gt;
    //Encrypt state using the lower 8 bytes of salt, and store the 8 byte result in P&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;|P&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;&lt;br /&gt;
    &amp;#039;&amp;#039;block&amp;#039;&amp;#039;  &amp;lt;- Encrypt(&amp;#039;&amp;#039;state&amp;#039;&amp;#039;, &amp;#039;&amp;#039;salt&amp;#039;&amp;#039;[0..63])&lt;br /&gt;
    P&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;  &amp;lt;- &amp;#039;&amp;#039;block&amp;#039;&amp;#039;[0..31]  //lower 32-bits&lt;br /&gt;
    P&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;  &amp;lt;- &amp;#039;&amp;#039;block&amp;#039;&amp;#039;[32..63] //upper 32-bits&lt;br /&gt;
&lt;br /&gt;
    //Continue encrypting state with salt, and storing results in remaining P-array&lt;br /&gt;
    &amp;#039;&amp;#039;&amp;#039;for&amp;#039;&amp;#039;&amp;#039; &amp;#039;&amp;#039;n&amp;#039;&amp;#039;  &amp;lt;- 2 &amp;#039;&amp;#039;&amp;#039;to&amp;#039;&amp;#039;&amp;#039; 9 &amp;#039;&amp;#039;&amp;#039;do&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
       &amp;#039;&amp;#039;block&amp;#039;&amp;#039;  &amp;lt;- Encrypt(&amp;#039;&amp;#039;state&amp;#039;&amp;#039;, &amp;#039;&amp;#039;block&amp;#039;&amp;#039; &amp;#039;&amp;#039;&amp;#039;xor&amp;#039;&amp;#039;&amp;#039; &amp;#039;&amp;#039;salt&amp;#039;&amp;#039;[64(n-1)..64n-1]) //encrypt using the current key schedule and treat the salt as cyclic&lt;br /&gt;
       P&amp;lt;sub&amp;gt;2n-1&amp;lt;/sub&amp;gt;  &amp;lt;- &amp;#039;&amp;#039;block&amp;#039;&amp;#039;[0..31] //lower 32-bits&lt;br /&gt;
       P&amp;lt;sub&amp;gt;2n&amp;lt;/sub&amp;gt;  &amp;lt;- &amp;#039;&amp;#039;block&amp;#039;&amp;#039;[32..63]  //upper 32-bits&lt;br /&gt;
&lt;br /&gt;
    //Mix encrypted state into the internal S-boxes of &amp;#039;&amp;#039;state&amp;#039;&amp;#039;&lt;br /&gt;
    &amp;#039;&amp;#039;&amp;#039;for&amp;#039;&amp;#039;&amp;#039; &amp;#039;&amp;#039;i&amp;#039;&amp;#039;  &amp;lt;- 1 &amp;#039;&amp;#039;&amp;#039;to&amp;#039;&amp;#039;&amp;#039; 4 &amp;#039;&amp;#039;&amp;#039;do&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
       &amp;#039;&amp;#039;&amp;#039;for&amp;#039;&amp;#039;&amp;#039; &amp;#039;&amp;#039;n&amp;#039;&amp;#039;  &amp;lt;- 0 &amp;#039;&amp;#039;&amp;#039;to&amp;#039;&amp;#039;&amp;#039; 127 &amp;#039;&amp;#039;&amp;#039;do&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
          &amp;#039;&amp;#039;block&amp;#039;&amp;#039;  &amp;lt;- Encrypt(&amp;#039;&amp;#039;state&amp;#039;&amp;#039;, &amp;#039;&amp;#039;block&amp;#039;&amp;#039; &amp;#039;&amp;#039;&amp;#039;xor&amp;#039;&amp;#039;&amp;#039; &amp;#039;&amp;#039;salt&amp;#039;&amp;#039;[64(n-1)..64n-1]) //as above&lt;br /&gt;
          S&amp;lt;sub&amp;gt;i&amp;lt;/sub&amp;gt;[2n]    &amp;lt;- &amp;#039;&amp;#039;block&amp;#039;&amp;#039;[0..31]  //lower 32-bits&lt;br /&gt;
          S&amp;lt;sub&amp;gt;i&amp;lt;/sub&amp;gt;[2n+1]  &amp;lt;- &amp;#039;&amp;#039;block&amp;#039;&amp;#039;[32..63]  //upper 32-bits&lt;br /&gt;
     &amp;#039;&amp;#039;&amp;#039;return&amp;#039;&amp;#039;&amp;#039; &amp;#039;&amp;#039;state&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
== Referensi ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Sumber dan atribusi ==&lt;br /&gt;
&lt;br /&gt;
Konten artikel ini diadaptasi dari [https://id.wikipedia.org/w/index.php?title=Bcrypt&amp;amp;oldid=28365321 Wikipedia bahasa Indonesia], revisi 28365321 (2025-11-07T03:45:38Z), yang tersedia berdasarkan lisensi Creative Commons Atribusi-BerbagiSerupa (CC BY-SA). Mohon gunakan konten ini secara bijak serta sesuai dengan ketentuan lisensi yang berlaku.&lt;/div&gt;</summary>
		<author><name>Maintenance script</name></author>
	</entry>
</feed>