[過去ログ] C++相談室 part130 [無断転載禁止]©2ch.net (1002レス)
前次1-
抽出解除 レス栞

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
699
(6): (ワッチョイ 176f-zXdO) 2017/07/11(火)22:35 ID:jUUyBjmf0(1/4) AAS
ビットローテーションについての相談です

今やりたいことは128文字の文字列を暗号化したい
その中で4バイトごとに区切って、4バイトごとにビットローテーションして暗号化を考えている

それの実現方法で悩んでいます
想定では右シフト

char a[128] = 文字列;
int x = a[0] << 24 + a[1] << 16 + a[2] << 8 + a[3];

// 下位2bitを上位2bitでtmp作成
int tmp = a[3] << 30;
省3
701
(2): 片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sdbf-R88v) 2017/07/11(火)22:43 ID:7IW2GOwZd(1) AAS
>>699
数学や計算機科学を知らない素人が暗号化方式を考えるのは、おそらく無駄であり、出来たとしてもすぐハッキングされてしまう。
暗号化方式は、先人の研究によって評価されている手法を使うのが一般的。より良い暗号化方式を
考えるのは計算機科学者の仕事であり、プログラマーはその手法をプログラムに取り入れるだけだ。
702: (ワッチョイ d79a-0UkT) 2017/07/11(火)22:45 ID:qjau/h5c0(3/4) AAS
どっちみち>>699の時点で環境依存だ
706: (ワッチョイ bfe4-LW8t) 2017/07/11(火)23:17 ID:7V5lebao0(4/5) AAS
>>699
少なくともこうしないと期待通りに動かないよ
int x = (a[0] << 24) + (a[1] << 16) + (a[2] << 8) + a[3];
725: (ワッチョイ d79a-0UkT) 2017/07/12(水)06:25 ID:Mf+sZV2C0(1/5) AAS
>>699
環境依存なのは、

intが4バイト
charが8ビット
負の数の表現方法

バグは

演算子の優先順位
xの右シフト
758
(1): (ワッチョイ 321b-HOJV) 2017/07/13(木)06:48 ID:Yj3E6QQW0(1) AAS
>>699
C++の規格ではいつまでたってもビットローテーション入れてこないからな。
だが、ビットしシフトで処理するのが速いか、いったん配列にいれたほうが速いか、
両方作って確認した方がいいぞ。
バレルシフタ載ってるMPUじゃないとビットシフトが結構重かったりする
797: (ワッチョイ 1a42-Z+b3) 2017/07/17(月)06:43 ID:WTwWKmZ80(1/2) AAS
>>673
プロパティってのはオブジェクトの状態の抽象化

例えば、コンテナのlistのsizeはコンテナとしての状態
sizeは要素数に対して定数時間で取得可能って条件があるからメンバ変数としてsizeを持ってる
そうでなければ線形時間になってしまう
vectorは大抵の場合、確保したメモリの始端と終端、要素の終端を表すポインタをメンバ変数に持つけど
ポインタ演算で定数時間で求められるから、sizeのメンバ変数は持っていない
emptyも状態、listもvectorも空を表すbool型のメンバ変数は持たないけど
コンテナとしてemptyかどうかの状態を取得できるわけで、メンバ変数と対とはなっていない

つまり、クラス設計上必要なオブジェクトとしての状態のget/setが目的であって
省5
前次1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.463s*