X



プログラミングで詰んだ助けて
■ このスレッドは過去ログ倉庫に格納されています
0001以下、5ちゃんねるからVIPがお送りします
垢版 |
2023/05/27(土) 08:07:18.383ID:XYsRtAxXd
Linuxコマンドで
BASE64に変換するアルゴリズム知ってる人いない?
0003以下、5ちゃんねるからVIPがお送りします
垢版 |
2023/05/27(土) 08:08:27.766ID:XYsRtAxXd
真面目に困ってます
0004以下、5ちゃんねるからVIPがお送りします
垢版 |
2023/05/27(土) 08:08:32.985ID:LAqHB/Ox0
while(1)
0005以下、5ちゃんねるからVIPがお送りします
垢版 |
2023/05/27(土) 08:09:16.766ID:f53UtBMQ0
nkfでできないかな
ishとか
0006以下、5ちゃんねるからVIPがお送りします
垢版 |
2023/05/27(土) 08:09:34.947ID:oSziLMBEd
ググれば1秒で分かるが
0007以下、5ちゃんねるからVIPがお送りします
垢版 |
2023/05/27(土) 08:10:00.891ID:JfuKa6gDa
chatgptに聞け
0008以下、5ちゃんねるからVIPがお送りします
垢版 |
2023/05/27(土) 08:10:32.137ID:oSziLMBEd
$ base64 foo.dat # エンコード
$ base64 -d foo.txt # デコード
0009以下、5ちゃんねるからVIPがお送りします
垢版 |
2023/05/27(土) 08:10:38.174ID:XYsRtAxXd
あ、伝わってないかもしれないけど
BASE64に変換するコマンドが知りたいんじゃない。そのコマンドがどういうアルゴリズムでBASE64に変換してるかが知りたい
0010以下、5ちゃんねるからVIPがお送りします
垢版 |
2023/05/27(土) 08:11:52.612ID:AVMIskSd0
よくわかんないけどオープンソースならソースコード読めば
0011以下、5ちゃんねるからVIPがお送りします
垢版 |
2023/05/27(土) 08:11:58.233ID:kJlZbQEc0
chatGPTの方が詳しい
0012以下、5ちゃんねるからVIPがお送りします
垢版 |
2023/05/27(土) 08:12:25.082ID:2OoiGOf80
>>7でおわってた
0013以下、5ちゃんねるからVIPがお送りします
垢版 |
2023/05/27(土) 08:12:43.260ID:XYsRtAxXd
chatGptに聞いてもだめだった
0014以下、5ちゃんねるからVIPがお送りします
垢版 |
2023/05/27(土) 08:13:08.366ID:Gri6Yewc0
最終手段は逆汗かね
0015以下、5ちゃんねるからVIPがお送りします
垢版 |
2023/05/27(土) 08:13:12.863ID:XYsRtAxXd
確かにLinuxならオープンソースだからソースあるかな?
0016以下、5ちゃんねるからVIPがお送りします
垢版 |
2023/05/27(土) 08:13:38.607ID:FfJZfh/e0
頭の悪い人ってこんな思考なんだな
0017以下、5ちゃんねるからVIPがお送りします
垢版 |
2023/05/27(土) 08:14:27.339ID:oSziLMBEd
シフト演算などしながら6ビットずつ取り出してマッピング変換していく
0018以下、5ちゃんねるからVIPがお送りします
垢版 |
2023/05/27(土) 08:14:30.814ID:wnHrEMaq0
せめてLinux板行けよ腐っても昔2chを閉鎖の危機から救ったエリート集団だぞ
0021以下、5ちゃんねるからVIPがお送りします
垢版 |
2023/05/27(土) 08:16:30.124ID:Pf/bcUkf0
>>9
コード読め
0022以下、5ちゃんねるからVIPがお送りします
垢版 |
2023/05/27(土) 08:17:03.625ID:XYsRtAxXd
>>17
それ渡す値が奇数だとエラー吐くよな?だいたいのライブラリがそうなんだけど
Linuxコマンドは奇数でも勝手に色々補完してくれて正常に動作するんだよねそれが知りたい
0023以下、5ちゃんねるからVIPがお送りします
垢版 |
2023/05/27(土) 08:17:03.979ID:kJlZbQEc0
chatGPTに聞いてダメな時は
もう一度部屋を作りなおして聞け
0024以下、5ちゃんねるからVIPがお送りします
垢版 |
2023/05/27(土) 08:17:40.614ID:Pf/bcUkf0
てか全然詰んでない
詰んでんの頭だろ
0026以下、5ちゃんねるからVIPがお送りします
垢版 |
2023/05/27(土) 08:19:43.039ID:oSziLMBEd
>>22
仰ってる意味がわからん
奇数ってなんだ?
0027以下、5ちゃんねるからVIPがお送りします
垢版 |
2023/05/27(土) 08:22:23.756ID:2OoiGOf80
>>22
確かスペースを=に補完するとか色々あったな
本来の仕様把握しろよ
0029以下、5ちゃんねるからVIPがお送りします
垢版 |
2023/05/27(土) 08:23:28.498ID:rslgkHv00
base64のエンコード/デコードくらい仕様読みながら自分で実装できるだろ
0030以下、5ちゃんねるからVIPがお送りします
垢版 |
2023/05/27(土) 08:24:13.444ID:2OoiGOf80
てかchatgptへの聞き方悪すぎだろ
0031以下、5ちゃんねるからVIPがお送りします
垢版 |
2023/05/27(土) 08:24:29.512ID:h8ek9anL0
俺らに聞くよりchatgptに聞いた方が早いよ
0032以下、5ちゃんねるからVIPがお送りします
垢版 |
2023/05/27(土) 08:24:48.357ID:XYsRtAxXd
>>26
16進数をpythonでBASE64に変換するとする

a="01020304050607fff"
これでaの長さが17で奇数じゃん?

これをpythonのライブラリに投げるとエラー吐くんだけど
Linuxコマンドなら正常に変換してくれる
0036以下、5ちゃんねるからVIPがお送りします
垢版 |
2023/05/27(土) 08:30:15.316ID:XYsRtAxXd
>>33
という話なのかなぁ?
でも単純にFとか0で埋めたら違う結果になるしなぁ
0038以下、5ちゃんねるからVIPがお送りします
垢版 |
2023/05/27(土) 08:33:32.532ID:KEWs04uta
エラー出てるんならエラーの内容読めよ
0039以下、5ちゃんねるからVIPがお送りします
垢版 |
2023/05/27(土) 08:34:41.684ID:XYsRtAxXd
>>35
それやったら全く違う文字列が返ってくるんよな

例えばLinuxコマンドだとdddddが返ってくるのにpythonでやるとccccccが返ってくるみいな
0041以下、5ちゃんねるからVIPがお送りします
垢版 |
2023/05/27(土) 08:38:53.854ID:oSziLMBEd
import base64
a="01020304050607fff".encode('utf-8')
print(base64.b64encode(a))
動くやんけ
https://ideone.com/iqVPfW
0043以下、5ちゃんねるからVIPがお送りします
垢版 |
2023/05/27(土) 08:41:40.283ID:XYsRtAxXd
>>40
そのライブラリでlengthが奇数だと16進数じゃない値を渡してるって言われて困ってる
実際に試してほしいエラーでない?
0046以下、5ちゃんねるからVIPがお送りします
垢版 |
2023/05/27(土) 08:47:32.617ID:XYsRtAxXd
>>41
なんかそれだとLinuxコマンドと別の文字列返ってるんよな仕組みがわからん。
エンコードしてる文字コードの問題?
0047以下、5ちゃんねるからVIPがお送りします
垢版 |
2023/05/27(土) 08:50:16.783ID:XYsRtAxXd
>>44
安易な0埋めをするとエンコード結果がサンプルと別物になる。

まじでわかんない詰みなんです。Linuxコマンドのソースを見るしかない
0050以下、5ちゃんねるからVIPがお送りします
垢版 |
2023/05/27(土) 08:56:53.762ID:XYsRtAxXd
>>49
わかった少し待って
0051以下、5ちゃんねるからVIPがお送りします
垢版 |
2023/05/27(土) 09:03:32.510ID:XYsRtAxXd
まずLinuxコマンド。渡す文字列?のlengthが奇数の321でも問題なく変換できる

echo "07001bc1000000fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff" | xxd -r -p - | base64

↓変換結果

BwAbwQAAAP//////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////w==
0052以下、5ちゃんねるからVIPがお送りします
垢版 |
2023/05/27(土) 09:04:26.032ID:XYsRtAxXd
なんかmateで見るとクソ小さくなってる
まずLinuxコマンド。渡す文字列?のlengthが奇数の321でも問題なく変換できる

echo "07001bc1000000fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff" | xxd -r -p - | base64

↓変換結果

BwAbwQAAAP//////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////w==
0053以下、5ちゃんねるからVIPがお送りします
垢版 |
2023/05/27(土) 09:05:27.814ID:XYsRtAxXd
え。なにこれ。mateで見ると文字が小さい
>>51がLinuxコマンドでやった結果
0054以下、5ちゃんねるからVIPがお送りします
垢版 |
2023/05/27(土) 09:08:46.288ID:XYsRtAxXd
pythonでやってみると奇数なのでエラーがでます

a = '07001bc1000000fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff'
b = bytes.fromhex(a)
encoded_bytes = base64.b64encode(b)
print(encoded_bytes.decode())

0やF埋めをしてみると値が変わってしまいます

↓結果

BwAbwQAAAA////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8=
0055以下、5ちゃんねるからVIPがお送りします
垢版 |
2023/05/27(土) 09:10:28.341ID:Tp8WZ3vOa
>>53
AA解除しろ
0056以下、5ちゃんねるからVIPがお送りします
垢版 |
2023/05/27(土) 09:10:29.237ID:YBe8hH700
base64コマンドのソース見ればよくね
0057以下、5ちゃんねるからVIPがお送りします
垢版 |
2023/05/27(土) 09:10:34.613ID:XYsRtAxXd
>>35>>41の方法でやるとこうなる


MDcwMDFiYzEwMDAwMDAwZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZg==
0058以下、5ちゃんねるからVIPがお送りします
垢版 |
2023/05/27(土) 09:19:09.522ID:XYsRtAxXd
だれかこっからどういう改善したらLinuxコマンドと同じ結果にできるかわからない?
0060以下、5ちゃんねるからVIPがお送りします
垢版 |
2023/05/27(土) 09:34:59.561ID:McsbuHFKM
なるほどこれはxxdの問題だな
xxdだと奇数だったら末尾を削るんだ

a = '07001bc1000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff'
b = bytes.fromhex(a)
encoded_bytes = base64.b64encode(b)
print(encoded_bytes.decode())

でやるとうまくいくはず
0061以下、5ちゃんねるからVIPがお送りします
垢版 |
2023/05/27(土) 09:40:45.389ID:TLpoDGe20
>>60ありがとう!
まじかそんな単純なアルゴリズムだったのか。
じゃあ変数が奇数かどうか判定して奇数なら末尾スライスするだけでOKか
0062以下、5ちゃんねるからVIPがお送りします
垢版 |
2023/05/27(土) 09:49:09.759ID:TLpoDGe20
ほんとだ。自分でも確認してみたけど
末尾消してる
■ このスレッドは過去ログ倉庫に格納されています