<commit_before># Free Pascal BCrypt

Free Pascal [BCrypt](https://en.wikipedia.org/wiki/Bcrypt "BCrypt") implementation.

This started because I wanted something that would be compatible with PHP's $2y$ BCrypt hashing.  Ultimately there is no difference between the $2a$ algorithm and the $2y$ algorithm.  Just the a, and y.  But I didn't want to have a wrapper function that replaced the a with the y.

If you try to verify a $2a$ password with PHP it will verify, but if you run the needs rehash function it will always say it needs a rehash.  So I moved this to Free Pascal compatible class format.

Tested with :
  * Free Pascal
    * 2.6.4 (Linux, Gentoo)
    * 3.0.0 (Linux, Gentoo)
  * PHP<commit_msg>Updated Testing targets.<commit_after># Free Pascal BCrypt

Free Pascal [BCrypt](https://en.wikipedia.org/wiki/Bcrypt "BCrypt") implementation.

This started because I wanted something that would be compatible with PHP's $2y$ BCrypt hashing.  Ultimately there is no difference between the $2a$ algorithm and the $2y$ algorithm.  Just the a, and y.  But I didn't want to have a wrapper function that replaced the a with the y.

If you try to verify a $2a$ password with PHP it will verify, but if you run the needs rehash function it will always say it needs a rehash.  So I moved this to Free Pascal compatible class format.

Tested with :
  * Free Pascal
    * 2.6.4 
      * (Linux, Gentoo)
      * (Linux, Raspbian)
    * 3.0.0
      * (Linux, Gentoo)
      * (Win10, 64bit) 
  * PHP
{'fraction_non_alphanumeric': 0.07563587684069611, 'fraction_numerical': 0.01606425702811245, 'mean_word_length': 3.449404761904762, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 2, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '5335250', 'n_tokens_mistral': 468, 'n_tokens_neox': 446, 'n_words': 221}