{"id":13611328,"url":"https://github.com/Pure-Peace/simple-rijndael","last_synced_at":"2025-04-13T04:33:57.019Z","repository":{"id":40268880,"uuid":"377573240","full_name":"Pure-Peace/simple-rijndael","owner":"Pure-Peace","description":"rijndael-cbc encryption and decryption algorithm implemented in pure Rust (supports zero-padding or pkcs7)","archived":false,"fork":false,"pushed_at":"2022-12-16T21:00:04.000Z","size":55,"stargazers_count":7,"open_issues_count":1,"forks_count":2,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-04-03T22:42:59.205Z","etag":null,"topics":["aes","cbc","osu","pkcs7","rijndael","rijndael-algorithm","rijndael-cbc","rust","zero-padding"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Pure-Peace.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2021-06-16T17:15:55.000Z","updated_at":"2024-12-05T15:04:36.000Z","dependencies_parsed_at":"2023-01-29T16:01:34.039Z","dependency_job_id":null,"html_url":"https://github.com/Pure-Peace/simple-rijndael","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Pure-Peace%2Fsimple-rijndael","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Pure-Peace%2Fsimple-rijndael/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Pure-Peace%2Fsimple-rijndael/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Pure-Peace%2Fsimple-rijndael/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Pure-Peace","download_url":"https://codeload.github.com/Pure-Peace/simple-rijndael/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247810592,"owners_count":20999946,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["aes","cbc","osu","pkcs7","rijndael","rijndael-algorithm","rijndael-cbc","rust","zero-padding"],"created_at":"2024-08-01T19:01:54.221Z","updated_at":"2025-04-13T04:33:56.796Z","avatar_url":"https://github.com/Pure-Peace.png","language":"Rust","funding_links":[],"categories":["Rust"],"sub_categories":[],"readme":"# simple-rijndael\n\n*rijndael-cbc encryption and decryption algorithm implemented in pure Rust (supports zero-padding or pkcs7)*\n\n### Test\n\n```\ncargo test\n```\n\n### Benchmark\n\n```\ncargo bench\n```\n\n### Examples\n\n```rust\nuse simple_rijndael::Errors;\n\nconst OSU_KEY: \u0026[u8; 32] = b\"osu!-scoreburgr---------20210520\";\nconst OSU_DECRYPTED: [u8; 160] = [\n    99, 53, 49, 97, 101, 101, 53, 54, 98, 98, 53, 49, 57, 53, 50, 52, 52, 50, 53, 50, 100, 49, 57,\n    48, 98, 97, 97, 53, 52, 98, 52, 57, 58, 80, 117, 114, 101, 80, 101, 97, 99, 101, 32, 58, 56,\n    49, 53, 55, 55, 50, 54, 50, 53, 97, 100, 97, 100, 54, 51, 57, 55, 51, 53, 97, 48, 52, 52, 101,\n    56, 97, 98, 97, 57, 51, 54, 48, 58, 52, 52, 58, 49, 56, 58, 54, 58, 52, 58, 54, 58, 50, 48, 58,\n    51, 56, 54, 52, 53, 58, 50, 54, 58, 70, 97, 108, 115, 101, 58, 70, 58, 54, 52, 58, 70, 97, 108,\n    115, 101, 58, 48, 58, 50, 49, 48, 54, 49, 53, 48, 54, 52, 52, 51, 49, 58, 50, 48, 50, 49, 48,\n    53, 50, 48, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,\n];\nconst OSU_CRYPTED: [u8; 160] = [\n    185, 209, 243, 33, 128, 187, 132, 199, 140, 189, 1, 129, 139, 66, 200, 37, 126, 34, 238, 100,\n    93, 124, 192, 252, 31, 121, 2, 130, 138, 123, 69, 66, 122, 208, 169, 15, 120, 22, 148, 19, 87,\n    203, 229, 139, 179, 89, 138, 56, 160, 239, 238, 254, 34, 119, 136, 225, 209, 226, 69, 117, 97,\n    49, 225, 198, 91, 192, 196, 12, 32, 235, 103, 141, 142, 168, 29, 102, 252, 65, 191, 137, 136,\n    170, 72, 165, 127, 49, 83, 201, 115, 26, 79, 200, 119, 28, 238, 34, 76, 25, 185, 164, 182, 254,\n    66, 148, 18, 36, 27, 36, 59, 165, 220, 95, 164, 115, 128, 12, 5, 161, 18, 236, 221, 167, 247,\n    104, 25, 29, 146, 225, 104, 140, 249, 175, 131, 158, 93, 143, 106, 146, 114, 220, 128, 33, 114,\n    191, 232, 103, 94, 169, 90, 105, 8, 85, 33, 140, 198, 71, 40, 65, 215, 29,\n];\n\n#[test]\nfn test_dec() {\n    assert_eq!(osu_dec().unwrap(), OSU_DECRYPTED.to_vec())\n}\n\n#[test]\nfn test_enc() {\n    assert_eq!(osu_enc().unwrap(), OSU_CRYPTED.to_vec())\n}\n\n#[test]\nfn test_pkcs7() {\n    use simple_rijndael::impls::RijndaelCbc;\n    use simple_rijndael::paddings::Pkcs7Padding;\n\n    let test_data = b\"This string is used to test Pkcs7Padding\".to_vec();\n    let key = b\"128 bit key test\";\n    let iv = b\"128 bit iv_ test\";\n    let r = RijndaelCbc::\u003cPkcs7Padding\u003e::new(key, 16).unwrap();\n    let result = r.encrypt(iv, test_data.clone()).unwrap();\n    assert_eq!(\n        result,\n        vec![\n            48, 107, 126, 49, 231, 35, 146, 225, 28, 112, 54, 23, 106, 236, 11, 57, 126, 253, 228,\n            202, 30, 190, 239, 164, 0, 255, 148, 52, 176, 36, 32, 241, 163, 213, 33, 243, 202, 7,\n            221, 94, 84, 37, 77, 160, 242, 223, 108, 162,\n        ]\n    );\n\n    let decrypted_result = r.decrypt(iv, result).unwrap();\n    assert_eq!(decrypted_result, test_data);\n}\n\n#[inline(always)]\npub fn osu_enc() -\u003e Result\u003cVec\u003cu8\u003e, Errors\u003e {\n    use simple_rijndael::impls::RijndaelCbc;\n    use simple_rijndael::paddings::ZeroPadding;\n\n    let iv = \u0026[\n        240, 124, 26, 154, 27, 186, 98, 170, 95, 190, 213, 103, 13, 128, 39, 59, 217, 84, 68, 144,\n        173, 93, 117, 132, 33, 213, 96, 154, 228, 231, 197, 162,\n    ];\n    let source = OSU_DECRYPTED.to_vec();\n    Ok(RijndaelCbc::\u003cZeroPadding\u003e::new(OSU_KEY, 32)?.encrypt(iv, source)?)\n}\n\n#[inline(always)]\npub fn osu_dec() -\u003e Result\u003cVec\u003cu8\u003e, Errors\u003e {\n    use simple_rijndael::impls::RijndaelCbc;\n    use simple_rijndael::paddings::ZeroPadding;\n\n    let iv = \u0026[\n        240, 124, 26, 154, 27, 186, 98, 170, 95, 190, 213, 103, 13, 128, 39, 59, 217, 84, 68, 144,\n        173, 93, 117, 132, 33, 213, 96, 154, 228, 231, 197, 162,\n    ];\n    let cipher = OSU_CRYPTED.to_vec();\n    Ok(RijndaelCbc::\u003cZeroPadding\u003e::new(OSU_KEY, 32)?.decrypt(iv, cipher)?)\n}\n\n\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FPure-Peace%2Fsimple-rijndael","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FPure-Peace%2Fsimple-rijndael","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FPure-Peace%2Fsimple-rijndael/lists"}