Files
pynkode/nkode_calculation.ipynb
2024-08-01 12:36:15 -05:00

173 lines
4.6 KiB
Plaintext

{
"cells": [
{
"cell_type": "markdown",
"source": [
"# What does is take to compromise a users nKode in the worst case scenario?\n"
],
"metadata": {
"collapsed": false
}
},
{
"cell_type": "code",
"execution_count": 16,
"outputs": [],
"source": [
"def compute_time_to_crack_hash(\n",
" num_of_attributes: int,\n",
" nkode_len,\n",
" secs_per_hash: float = 0.5,\n",
") -> list[float, float]:\n",
" secs_to_days = 1/(60*60*24)\n",
" secs_to_years = secs_to_days / 365\n",
" total_secs_to_compute_half_of_hashes = num_of_attributes ** nkode_len * secs_per_hash * 0.5\n",
" return [round(total_secs_to_compute_half_of_hashes * secs_to_days, 2), round(total_secs_to_compute_half_of_hashes * secs_to_years, 2)]\n"
],
"metadata": {
"collapsed": false,
"ExecuteTime": {
"end_time": "2024-07-26T15:29:35.667921Z",
"start_time": "2024-07-26T15:29:35.664278Z"
}
}
},
{
"cell_type": "code",
"execution_count": 21,
"outputs": [],
"source": [
"def matrix_to_md_table(col_names: list[str], mat: list[list[any]]) -> str:\n",
" assert len(col_names) == len(mat[0])\n",
" numb_cols = len(col_names)\n",
" table = \"|\" + \"|\".join(col_names) + \"|\\n\"\n",
" table += \"|\" + \"|\".join(['-' for _ in range(numb_cols)]) + \"|\\n\"\n",
" for row in mat:\n",
" table += \"|\" + \"|\".join([str(el) for el in row]) + \"|\\n\"\n",
" return table"
],
"metadata": {
"collapsed": false,
"ExecuteTime": {
"end_time": "2024-07-27T18:42:04.980503Z",
"start_time": "2024-07-27T18:42:04.976703Z"
}
}
},
{
"cell_type": "code",
"execution_count": 22,
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"|number of attributes|nkode length|days to crack|years to crack|\n",
"|-|-|-|-|\n",
"|9|4|0.02|0.0|\n",
"|9|5|0.17|0.0|\n",
"|9|6|1.54|0.0|\n",
"|9|7|13.84|0.04|\n",
"|9|8|124.56|0.34|\n",
"|9|9|1121.01|3.07|\n",
"|9|10|10089.08|27.64|\n",
"|10|4|0.03|0.0|\n",
"|10|5|0.29|0.0|\n",
"|10|6|2.89|0.01|\n",
"|10|7|28.94|0.08|\n",
"|10|8|289.35|0.79|\n",
"|10|9|2893.52|7.93|\n",
"|10|10|28935.19|79.27|\n",
"|11|4|0.04|0.0|\n",
"|11|5|0.47|0.0|\n",
"|11|6|5.13|0.01|\n",
"|11|7|56.39|0.15|\n",
"|11|8|620.25|1.7|\n",
"|11|9|6822.77|18.69|\n",
"|11|10|75050.42|205.62|\n",
"|12|4|0.06|0.0|\n",
"|12|5|0.72|0.0|\n",
"|12|6|8.64|0.02|\n",
"|12|7|103.68|0.28|\n",
"|12|8|1244.16|3.41|\n",
"|12|9|14929.92|40.9|\n",
"|12|10|179159.04|490.85|\n",
"|13|4|0.08|0.0|\n",
"|13|5|1.07|0.0|\n",
"|13|6|13.97|0.04|\n",
"|13|7|181.56|0.5|\n",
"|13|8|2360.33|6.47|\n",
"|13|9|30684.32|84.07|\n",
"|13|10|398896.1|1092.87|\n",
"|14|4|0.11|0.0|\n",
"|14|5|1.56|0.0|\n",
"|14|6|21.79|0.06|\n",
"|14|7|305.02|0.84|\n",
"|14|8|4270.22|11.7|\n",
"|14|9|59783.12|163.79|\n",
"|14|10|836963.7|2293.05|\n",
"|15|4|0.15|0.0|\n",
"|15|5|2.2|0.01|\n",
"|15|6|32.96|0.09|\n",
"|15|7|494.38|1.35|\n",
"|15|8|7415.77|20.32|\n",
"|15|9|111236.57|304.76|\n",
"|15|10|1668548.58|4571.37|\n",
"\n"
]
}
],
"source": [
"time_to_crack = []\n",
"for num_attr in range(9, 16):\n",
" for nkod_len in range(4, 11):\n",
" hash_crack = [num_attr, nkod_len]\n",
" hash_crack.extend(compute_time_to_crack_hash(num_attr, nkod_len))\n",
" time_to_crack.append(hash_crack)\n",
"\n",
"hash_crack_md = matrix_to_md_table([\"number of attributes\", \"nkode length\", \"days to crack\", \"years to crack\"], time_to_crack)\n",
"\n",
"\n",
"print(hash_crack_md)"
],
"metadata": {
"collapsed": false,
"ExecuteTime": {
"end_time": "2024-07-27T18:43:31.002026Z",
"start_time": "2024-07-27T18:43:30.997876Z"
}
}
},
{
"cell_type": "code",
"execution_count": null,
"outputs": [],
"source": "",
"metadata": {
"collapsed": false
}
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 2
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython2",
"version": "2.7.6"
}
},
"nbformat": 4,
"nbformat_minor": 0
}