mediabunny 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +28 -0
- package/index.js +66 -0
- package/package.json +11 -0
package/README.md
ADDED
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
## 𒅗𒀠𒁉𒉡𒈨𒅗𒉡
|
|
2
|
+
|
|
3
|
+
𒀭𒄑𒋾𒁮𒈠𒋢𒅔 — 𒅆𒀭𒀸𒂵𒅆𒆠 𒋢𒁺𒇻 𒀸𒂵𒄿 𒅆𒀭𒄑𒁲𒋗𒀸
|
|
4
|
+
𒁉𒋢𒁀𒉌 𒅗𒀠𒁉𒉡𒆷𒁺 𒋢𒇷 𒅆𒀭𒀸𒂵𒅆𒆠 𒀭𒄿𒋛𒊩𒆠𒉿𒁍
|
|
5
|
+
𒀭𒄿𒈨𒅔 **Rabin Miller** 𒁉𒋢𒁀𒉌𒀸𒂵
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
npm install mediabunny
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
### 𒁀𒋾𒀭𒉌𒀭𒄑𒋾𒈠𒀭𒋾
|
|
12
|
+
|
|
13
|
+
```js
|
|
14
|
+
import { 𒄑𒋾𒁮𒈠𒋢𒅔 } from 'mediabunny';
|
|
15
|
+
|
|
16
|
+
const 𒁉𒆠𒀀𒁉 = 𒄑𒋾𒁮𒈠𒋢𒅔(1024);
|
|
17
|
+
console.log(𒁉𒆠𒀀𒁉.toString(16)); // 𒁉𒆠𒀀𒁉 𒈠𒉌𒀀 𒋢𒁺𒇻
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
### 𒁉𒋢𒁀𒉌
|
|
21
|
+
|
|
22
|
+
- 𒄑𒋾𒁮𒈠𒋢𒅔(𒁉𒈨 = 1024): 𒅆𒀭𒀸𒂵𒅆𒆠 𒁉𒆠𒀀𒁉 𒀭𒁲𒈠𒁕𒀀
|
|
23
|
+
- 𒀭𒈨𒋾 𒋢𒇷 𒁲𒈠 𒄿𒅗 𒁉𒀸𒆠 𒋗𒁺 **Rabin Miller** 𒁉𒋢𒁀𒉌𒀸𒂵
|
|
24
|
+
|
|
25
|
+
---
|
|
26
|
+
|
|
27
|
+
𒄿𒈠𒋢𒆠𒀭𒅔𒋾𒋗𒉌𒀭𒁉𒋾 𒅆𒀭𒀸𒂵𒅆𒆠
|
|
28
|
+
𒋢𒇷 𒋗𒁺𒈠𒅈 𒋗𒁺𒇻𒅗𒀸𒋫𒄿𒅗𒅈𒆷𒄿𒋢𒅔𒄿𒋾
|
package/index.js
ADDED
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
// 𒀀𒁕𒀜𒉿𒋗𒂠 𒀭𒈠𒅔𒅗𒋢 𒌋𒄿𒆠𒈠 𒂵𒈠𒅈𒀜𒀊𒇷𒁕𒀭
|
|
2
|
+
|
|
3
|
+
function 𒄿𒋛𒊩𒆠𒉿𒁍(𒁉𒈨) {
|
|
4
|
+
// 𒅆𒀸𒅆𒀸 𒅗𒀸𒅆𒀭𒉌𒋗𒀭𒁲𒁺𒀠𒈾𒀸𒄿𒋾𒁲𒉿
|
|
5
|
+
const 𒆠𒀭𒅔𒋾 = 𒁉𒈨 / 8;
|
|
6
|
+
const 𒅗𒀠𒁉𒉡 = new Uint8Array(𒆠𒀭𒅔𒋾);
|
|
7
|
+
crypto.getRandomValues(𒅗𒀠𒁉𒉡);
|
|
8
|
+
𒅗𒀠𒁉𒉡[0] |= 0b10000000;
|
|
9
|
+
𒅗𒀠𒁉𒉡[𒅗𒀠𒁉𒉡.length - 1] |= 1;
|
|
10
|
+
|
|
11
|
+
let 𒁉𒀸𒆠 = [...𒅗𒀠𒁉𒉡].map(𒋢 => 𒋢.toString(16).padStart(2, '0')).join('');
|
|
12
|
+
return BigInt('0x' + 𒁉𒀸𒆠);
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
function 𒂗𒍑𒂗𒈨𒆠𒉿(𒁲𒋗, 𒅗𒀸, 𒈠𒋗) {
|
|
16
|
+
// 𒀭𒅆𒅆𒉌𒋫𒄿𒂗𒇻𒅖𒋛 𒀭𒈾𒋩𒅖
|
|
17
|
+
let 𒀸𒂵𒄿 = 1n;
|
|
18
|
+
𒁲𒋗 %= 𒈠𒋗;
|
|
19
|
+
while (𒅗𒀸 > 0) {
|
|
20
|
+
if (𒅗𒀸 % 2n === 1n) 𒀸𒂵𒄿 = (𒀸𒂵𒄿 * 𒁲𒋗) % 𒈠𒋗;
|
|
21
|
+
𒁲𒋗 = (𒁲𒋗 * 𒁲𒋗) % 𒈠𒋗;
|
|
22
|
+
𒅗𒀸 /= 2n;
|
|
23
|
+
}
|
|
24
|
+
return 𒀸𒂵𒄿;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
function 𒅆𒀭𒀸𒂵𒅆𒆠(𒈠𒆷, 𒆠𒋢 = 64) {
|
|
28
|
+
// 𒌋𒄿𒂗𒉿𒋫 𒋢𒁺𒈨𒂠 𒁲𒈠𒆠𒋫 𒄑𒁀𒅗𒁕𒉌𒅗𒋢𒇷𒄑𒊩𒌋
|
|
29
|
+
if (𒈠𒆷 === 2n || 𒈠𒆷 === 3n) return true;
|
|
30
|
+
if (𒈠𒆷 < 2n || 𒈠𒆷 % 2n === 0n) return false;
|
|
31
|
+
|
|
32
|
+
let 𒅗𒀠𒅆 = 0n;
|
|
33
|
+
let 𒄑𒈠𒆪 = 𒈠𒆷 - 1n;
|
|
34
|
+
while (𒄑𒈠𒆪 % 2n === 0n) {
|
|
35
|
+
𒄑𒈠𒆪 /= 2n;
|
|
36
|
+
𒅗𒀠𒅆 += 1n;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
for (let 𒅆𒋫𒄿 = 0; 𒅆𒋫𒄿 < 𒆠𒋢; 𒅆𒋫𒄿++) {
|
|
40
|
+
const 𒀊𒁲𒈠𒉌 = 2n + BigInt(Math.floor(Math.random() * Number(𒈠𒆷 - 4n)));
|
|
41
|
+
let 𒈠𒂵𒊍𒁲 = 𒂗𒍑𒂗𒈨𒆠𒉿(𒀊𒁲𒈠𒉌, 𒄑𒈠𒆪, 𒈠𒆷);
|
|
42
|
+
if (𒈠𒂵𒊍𒁲 === 1n || 𒈠𒂵𒊍𒁲 === 𒈠𒆷 - 1n) continue;
|
|
43
|
+
|
|
44
|
+
let 𒀠𒅔𒄿 = false;
|
|
45
|
+
for (let 𒋛 = 0n; 𒋛 < 𒅗𒀠𒅆 - 1n; 𒋛++) {
|
|
46
|
+
𒈠𒂵𒊍𒁲 = 𒂗𒍑𒂗𒈨𒆠𒉿(𒈠𒂵𒊍𒁲, 2n, 𒈠𒆷);
|
|
47
|
+
if (𒈠𒂵𒊍𒁲 === 𒈠𒆷 - 1n) {
|
|
48
|
+
𒀠𒅔𒄿 = true;
|
|
49
|
+
break;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
if (𒀠𒅔𒄿) continue;
|
|
54
|
+
return false;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
return true;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
export function 𒄑𒋾𒁮𒈠𒋢𒅔(𒁉𒈨 = 1024) {
|
|
61
|
+
// 𒄿𒁲𒈨𒂠𒋗𒁺𒅗𒀠 𒀭𒄿𒉌𒋫𒅗𒅆𒀭𒈨𒋾𒀭𒄑𒋾𒉌𒁲𒀀
|
|
62
|
+
while (true) {
|
|
63
|
+
const 𒁀𒀠𒆷 = 𒄿𒋛𒊩𒆠𒉿𒁍(𒁉𒈨);
|
|
64
|
+
if (𒅆𒀭𒀸𒂵𒅆𒆠(𒁀𒀠𒆷)) return 𒁀𒀠𒆷;
|
|
65
|
+
}
|
|
66
|
+
}
|
package/package.json
ADDED