I have a ton of hashed texts and their decrypted or de-hashed forms (I don't know which term is suitable in this case) via bcrypt. The thing I want to learn is how they are decrypted.

For example, the second text after the first colon is the salt and the last one is their plain versions.


As far as I get, 12 is the number of rounds.

  • 1
    Explain BCrypt like I'm 5 – kelalaka Nov 18 '20 at 22:33
  • @kelalaka Öyle şerait oluyor, tahtında az bir hareke sahibini çıkarıyor tâ âlâ-yı illiyyîn Öyle hâlât oluyor ki; küçük bir hareket, kâsibini indiriyor tâ esfel-i sâfilîn. Bu kadar ilmin kabirden itibaren, neticesi nazariyla degil ama var olusu nazariyla, beyhude olmasini bile bile fahirlenerek bir katre tenezzule teveccuh edememek bana bir katki saglamadi, dilerim size saglar, saglamistir. ALLAH(c.c.) hasir meydaninda edindigimiz ilmin hesabini verebilmeyi nasip etsin insaALLAH. – snr Nov 21 '20 at 9:55

Bcrypt is a hash function, not an encryption function.

It cannot be decrypted, in the sense that you send the hash result into a function and get the decrypted version. You can only bruteforce it: send lots and lots of inputs into it, until you get the desired output, or you give up.

According to Wikipedia, this is a Bcrypt string:

\__/\/ \____________________/\_____________________________/
 Alg Cost      Salt                        Hash

The 12 is not the number of rounds, but the Cost Factor, measured as 2x. In case of 12, there are 4096 rounds (212). The $2y indicates that those hashes are created by a bugged Blowfish version.

The only thing you can do it throw the salt and plain text at Blowfish, using the supplied cost factor, and compare the stored hash with the calculated one.

Not the answer you're looking for? Browse other questions tagged or ask your own question.