「ハッシュ値」を含む日記 RSS

はてなキーワード: ハッシュ値とは

2024-03-08

ビットコインって本当にゴールドなの?

金はだいたい誰が見てもきれいだと思うし価値理解できるけど、

0が並んだハッシュ値を「きれい」だと思う人ってかなり限られると思うのだけど。

2023-12-17

プログラミング初心者です。以下のコードの誤りはなんですか

僕はプログラミング歴2週間の初心者です。キーと値を入力できるデータベースを作っています

以下のコードを実行してデータを追加し続けると、一定サイズを超えるとエラーが出てしまうみたいです。

理想は、データが追加された後にサイズが足りなくなったら動的に自動拡大されることです。

もし詳しい人がいたらご教示お願い致します。

import sys
import os
import mmap
import hashlib

def h(x):
    return int(hashlib.sha512(x.encode()).hexdigest(), 16)

def create_db(filename):
    with open(filename, 'wb') as f:
        f.write(b'\0' * 1024 * 1024)  # 1MBの空ファイル作成

def set_key(filename, key, value):
    with open(filename, 'r+b') as f:
        mm = mmap.mmap(f.fileno(), 0)
        pos = h(key) % mm.size()
        while mm[pos:pos+1] != b'\0':
            pos = (pos + 1) % mm.size()
            if pos == h(key) % mm.size():
                f.seek(0, os.SEEK_END)
                f.write(b'\0' * mm.size())  # ファイルサイズを2倍にする
                mm = mmap.mmap(f.fileno(), f.tell())  # ファイルサイズを反映させる
                pos = h(key) % mm.size()  # ハッシュ値を再計算する
        data = key + '\0' + value + '\0'
        data = data.encode()
        mm[pos:pos+len(data)] = data
        mm.close()  # mmapオブジェクトを閉じる

def get_key(filename, key):
    with open(filename, 'r+b') as f:
        mm = mmap.mmap(f.fileno(), 0)
        pos = h(key) % mm.size()
        while mm[pos:pos+1] != b'\0':
            end = mm.find(b'\0', pos, mm.size())  # 第2引数と第3引数指定する
            if end == -1:
                end = mm.size()
            if mm[pos:end].decode() == key:
                pos = end + 1
                end = mm.find(b'\0', pos, mm.size())  # 第2引数と第3引数指定する
                if end == -1:
                    end = mm.size()
                value = mm[pos:end].decode()
                mm.close()  # mmapオブジェクトを閉じる
                return value
            pos = (pos + 1) % mm.size()
            if pos == h(key) % mm.size():
                break
        mm.close()  # mmapオブジェクトを閉じる
        return None

def main():
    cmd = sys.argv[1]
    if cmd == 'create':
        create_db(sys.argv[2])
    elif cmd == 'set':
        set_key(sys.argv[2], sys.argv[3], sys.argv[4])
    elif cmd == 'get':
        print(get_key(sys.argv[2], sys.argv[3]))

if __name__ == '__main__':
    main()
 

2023-10-05

[][] 2023-10-05 廃人日記へ移行

異常な幻想の網に捕らわれ、PTSDの闇に沈んでおり、仕事から離脱余儀なくされております

その幻想は、あまりにも鮮烈であったため、現実か夢か、いまだに疑念が拭えぬものとなりました。

認識の糸が紡ぎとどけず、安定した現実がどこに棲むのか、それを問い詰めざるを得ません。

安寧な現実の有り難みを噛みしめております次第でございます

近頃は、数学の奥深さに魅了され、勉強に没頭しております

思考結晶抽象的な形に仕立て上げ、それを操ることは、極めて魅力的であり、しか財政的な負担は一切生じません。

傷病手当金恩恵に浴しており、感謝の念に堪えません。その支給期間が続く限り、職場の扉を閉じる覚悟でおります

この転向した日記は、"勉強日記"のカテゴリーからの移行でございます

"勉強日記"という名は、絶え間ない学びを要求されるという、何とも重苦しい響きがあったため、精神的な疲弊を感じておりました。

"廃人日記"の名に変えることで、統合失調症患者が日々の苦闘を語る場として、うってつけでございます

真正性保証のために、特別プロセスにより、内容にハッシュ値を刻み付けることに決意いたしました。

他のブログプラットフォームも一縷の望みを託しましたが、結局、匿名性の高いダイアリーが最も筆が進むようでございます

私は、被害妄想に囚われると、コンテンツを一掃する衝動に駆られますが、匿名ダイアリーはその記録が永遠に残るという、安心感をもたらしております

hash: 38d8d7e05e9f40a04eec8e6da9f768a3

2023-07-10

手動でビットコイン採掘してる

ビットコインのECDSAってデジタル署名技術に使われてる楕円曲線暗号て平文を80桁のハッシュ値に変えてて、手動でもできる。

暇つぶしハッシュ値だして0がいっぱいつくまで延々と計算するの楽しい

2023-05-13

AI生成物の引用ってどうやればいいの?

引用元として「ChatGPTで○○と質問した時の回答」と書いても、同じ質問しても同じ文章で回答してくれないか読み手確認できないでしょ。

画像生成AIも同じプロンプト、同じハッシュ値、同じモデルでも同じ画像を生成してくれないでしょ

それがほんとにAI生成物から引用か分からない。自己申告にしかならない。

2022-12-04

Chat.OpenAIゲキヤバ。まじでちょっとした処理はググる必要なくなった

俺:

javascript言語で、現在時刻のタイムスタンプからMD5ハッシュ値を出力する関数、timeToMd5 を作ってください

JavaScriptでは、次のような関数作成することができます

function timeToMd5() {
  // 現在時刻のタイムスタンプを取得しまconst timestamp = Date.now();

  // ハッシュ値を出力するために、MD5ライブラリロードしまconst md5 = require('md5');

  // timestampを文字列に変換し、それをMD5ハッシュ値に変換して出力しまconst hash = md5(timestamp.toString());
  return hash;
}

このような関数作成することで、現在時刻のタイムスタンプからMD5ハッシュ値を出力することができます

ご参考までに。

俺:

nodeコマンドで実行しましたが、"Error: Cannot find module 'md5'" というエラーになってしまいました。なにか解決方法がありますか?

質問のように、JavaScript定義した関数を実行すると、"Error: Cannot find module 'md5'" というエラーが発生しているようです。

このエラーが発生する原因は、JavaScriptコード内で、MD5ライブラリロードしようとしたときに、そのライブラリインストールされていないためです。

JavaScriptコードで、MD5ライブラリを利用するには、まず、そのライブラリインストールする必要があります

インストールするには、次のように、nodeコマンドを実行します。

$ npm install md5

このコマンドを実行することで、MD5ライブラリインストールされ、JavaScriptコードから利用することができるようになります

また、JavaScriptコードを実行するには、次のようにnodeコマンド使用します。

$ node [JavaScriptファイル名]

このようにすることで、JavaScriptコードを実行することができます

ご参考までに。

俺:

ありがとうございます。実行できました😁

おめでとうございます!ご質問いただいた内容について、正しく解決されたようで嬉しいです。

しまだご質問があるようでしたら、お気軽にお問い合わせください。今後とも、Assistantをご利用いただけますよう、よろしくお願いいたします。

2022-11-30

ボクの使ったCS(ジジイの思い出話) anond:20221129085814

まぁ、下っ端プログラマには要らないだろうけど、いわゆるシステムエンジニアとかアーキテクトとか言われるレベル仕事するには、なるべく知っとかないといけないよね。

オレの場合は、大学はかろうじて理系一角だったけど、学問的にコンピュータサイエンスを学んだことはなくて、某IT会社でなかば業務上必要に迫られ、なかば趣味的な興味本位もありで、ちょっとずつ勉強した。

で、もう20年くらい前だし、すでに廃止されてる(と思う)ので、守秘義務違反とかの面倒なことにならなそうだと想定してぶっちゃけると、大手携帯会社ショップで各店舗独自プロモーション打ったりするためのWebシステムの開発に関わったことがある。

顧客の(および自分とこの)エライ人なんかにシステム設計根拠(この方式が最善なのか?もっと安く早くやれる方法はないのか?などなど)を常に問いかけられ、説明説得しなきゃならない。そこでコンピュータサイエンスに基づいて理路整然と話をすると、ちゃんと信頼してもらえるし、納得してカネ払ってもらえるw

そこで使ったのが、以下のような各種理論だ:



などなど... 自分史上最高に残業させられたこ仕事やってた年の年収は、900万円台おしくも1000万には届かなかったねぇw

 --追記--

コンピュータサイエンスがらみの思い出でもう一個面白い(とオレが思う)ネタがあるので、ついでに書いとこうw

これは、上で書いた携帯会社システムよりだいぶ前のことになるが、とあるグループウェアの開発に関わってたときメールFAXに向けて出力するドライバを書いたことがある。昔のことなのでオープンソースあんまり普及してないし、タダでお手軽に使えるライブラリが見つからなかったので、「車輪の再発明」っぽいけど自分でハフマン符号化によるデータ圧縮アルゴリズム勉強して作ったのだ。

Win32APIとか呼び出して、ビットマップテキストを描画させたとこからドットをちまちま数えて、白のドットがいくつ続いてたらこコード、黒がいくつ続いてたらあのコード...って可変長のビットパターンをつなぎ合わせてファイルに書き出す...みたいな。これが理論通りにうまいこと動作して、FAXから文書が出てきた時はとっても楽しかったw

2022-05-06

[]RStudio最新版インストールするスクリプトを書いた(Debian/Ubuntu)

RStudioがPCから気がついたら消滅していたので何回もやり直すのが面倒で書いた

Debian/Ubuntubash

コメントアウトをいじればFedoramacOSでも動くと思う

https://pastebin.com/HiPqLVq7 (6/4 shコマンドでも動くように修正 以前はbash hogehoge起動していたので動作確認していなかった)

エラーでここに貼れなかった

実行したディレクトリダウンロードする

パッケージインストールするのでsudoとかが必要

必要パッケージについて(コメントアウトオフに)

util-linux(rev) libxml2-utils(xmllint) gpg curl coreutils(sha256sum)とR関連

  1. rev まずデフォルトで入っている 文字列を逆さまにするコマンド
  2. xmllint 同上 xpathを扱えるコマンド(xmlを扱うコマンド) Debianでは入っていなかった
  3. gpg 同上 署名関連 これがないとインストール出来ない環境もある
  4. curl 同上 getリクエストとかを送れる bashだけでHTTPとかを送るのは苦痛なので
  5. sha256sum 同上 ハッシュ値確認
  6. R関連 これがないと動かない
コード関連備考
xmllint
echo "$HTML" | xmllint --nowarning --xpath hogehoge --html - | hogehoge

こうしないとxmllintがエラーでhtlmなどをうまく読み取らない

sed 's/href="//g;s/"//g;s/\s/\n/g;s/^.?$//g;s/^\n//g'

href="hogehoge"の形で出てxmllint内で除去出来なかったのでsed妥協

hrefが1回しか出ないのでひとまとめにできそうだが面倒なので分けた

この書き方なら複数回出ても除去できるはず

先頭の謎のスペースの除去が面倒だった

sha256sum
echo "$HASH"  "$FIELNAME" | sha256sum --status -c ;echo $?

スペースが2つないと書式で怒れられてハッシュ値が合っていてもsha256sumが終了ステータス0で正常終了を返してくれない

使ったツール

VScodium

ShellCheck

https://open-vsx.org/vscode/item?itemName=timonwong.shellcheck

XPath Helper

https://chrome.google.com/webstore/detail/xpath-helper/hgimnogjllphhhkhlmebbmlgjoejdpjl

最後

zenn.devに書こうか迷ったがどちらの方が良かったのだろうか…

ダウンロードしたサーバーがやられてるならハッシュ値改ざんするだろうgpgで確認しないと意味ないでしょとかsudoでやったらディレクトリがとか色々ガバあるからかいい感じに改良して

参考

https://cran.rstudio.com/bin/linux/debian/

https://www.rstudio.com/code-signing/

https://www.rstudio.com/products/rstudio/download/

2022-04-19

10年以上同じPCを使っていたが、25,000円で新調した

1か月ほど前まで初代第1世代Core iのPCをほぼノーマルで使っていたが、Windows肥大化(*1(本増田最後に参考webページ記載。以下同様))のせいかweb閲覧やExcel操作程度の作業でも引っかかりを覚えるようになったり、Windows11ブームに煽られてセキュリティ関連の記事を読み古いCPUには脆弱性が付き物だと知った(*2・3・4)り、あれこれあったためPCを新しくすることにした。

その際に色々な知見を得て情報更新ができたため、日記帳リンク集として増田に残しておくことにした。極少数の人にしか役に立たないであろう文章だが、体験談の類として暇つぶしに読んでもらえれば幸い。ただ、過去PC事情を懐古したりするのが目的なら、数年前にホッテントリ入りした別の記事(*5・6)を読む方が有意義かもしれない。

改装作業にどう臨んだか

まず、パーツの買い方を3種類に大別して検討した。

この前段階で格安中華ミニPC(*7)も候補に挙げていたが、拡張の厄介さや商品到着までの時間の長さを難に感じて選択肢から外した。

● H610M/BとローエンドCPUと8GB DIMM×2

今新しく自作PCを組むなら鉄板構成だと思う。現在相場では、M/B 13k円、Celeron 7k円、DIMM2枚組 6k円、SSD 200GB 4k円で約3万円くらいになるだろう(*8・9・10)。構成品のどれかを中古にすれば2万円台前半で抑えることもできそうだ。

しかしながら、最近まで骨董品我慢できた身には過剰スペックになりそうだという懸念逆張り志向のせいでRyzen APUに惹かれたためとで、この組合せは除外した。

中古パーツ1点買い

時機を見極めて個々のパーツを買えれば、安く挙げることができる方法だろう。

だが、動作不良品リマーク品(*11)・その他の不動品(*12)等を掴むリスクやピン折れ曲り(*13)他機器不良への対処を避けるため、この組合せも選ばなかった。

M/B+CPU+αのセット・ベアボーンキット・本体中古で購入

M/BCPU・ビープスピーカー・電源があれば動作検証可能だ(*14)。そのことは前提知識として通用してるだろうと期待し、ジャンクな出品物・者を弾けば少なくとも直ぐに判明するような不良品を掴むことは避けられるだろうと考えて、セット品を軸にパーツ調達することにした。

ただ、個別のパーツだけ欲しいと思う人が多いせいか希望に叶う出品は少なかった。値段や特定のパーツへのこだわりは捨てて条件をだいぶ緩くしたが、それでも購入作業を終えるには結構時間がかかった。

個々のパーツをどう検討たか

作業の結果以下のパーツが手に入った。これら以外にも試用して直ぐ売却したものがあるが、その分は少々の損失で済んだため、実質合計費用は25k円+10k円。

● 電源

元の電源が10年以上持ったので、5年前の製品なら後5年は使えるだろうと考え、中古で済ませることにした。

参考になるまとめ記事を元に、経年による劣化が小さいと思われる、電圧電流の波形が綺麗な製品(*15)を候補にした。5年以上前に発売された商品を1年少々しか使っていない状態良好品だと嘯く詐欺師フリマには跋扈しているが、そういう輩を除外しても選択肢が十分にあるのは幸いだった。プラグイン電源という危険そうな製品(*16)以外に無難選択肢が無かったのは、老害増田には難だったが。

余談だが、電動ブロワーは電源の清掃にとても役立った(*17)。騒音問題にならない環境の人には是非お勧めしたい。

● ケース・M/B

大型のファンを備えた電源ユニットをケース下部に置く組み方が主流になって久しいようだ(*18)が、冷却や静音にこだわる必要が無いのでケースは流用することにした。ただ、電源LEDそのままで機能しないので、オス-メスのジャンパワイヤー(デュポンケーブル)をフリマで買ってピンとコネクタをつないだ(*19)。

マザーボードについては色々調べたが、8ピンのATX 12V電源コネクタ(*20)が一般化して久しいことや、フェーズ数の増加(余談だが、I/O電圧とコア電圧が異なるデュアルボルテージは、30年近く前にモバイルP54Cで初めて採用された)(*21・22)といった電源回りのことで特に知ることが多かった。光物(*23)はあまり興味が無いのでほぼスルーした。

CPUメモリ

RyzenIntel Coreもどちらも魅力的だと思った(*24・25)が、結局はAMDで組むことにした。そこそこのGPUを省電力で使えることが大きかった。

メモリは多少勉強した(*26)つもりでパーツ選定に着手したが、チップセットの16Gbitチップ対応事情(*27)を全く把握していなかったため、相性問題にぶつかって最初に購入したパーツセットを買換えることになった。容量について言うと、16GBだとたまに心許なくなるが32GBだと過剰という感がある。Intelなら24GB(8+16の2枚)載せて16GB分をデュアルチャネルモードで使える(*28)ので、その点は良いなとも思う。

ストレージ光学ドライブ

SATA SSDでも体感速度は悪くない(*29)という言説を見て、安く手に入ったSSDで十分と判断した。記録方式TLCかどうかといった商品選択の時に普通ポイントになる点(*30)は、次に買換えたくなった時に気にかけようと思う。

光学ドライブも電源ユニットと同様、本来は5年程度で買換えるべき製品とされている(*31)が、それはそれとして、電源と同様の理由で5年くらい前の中古品を探そうかと思って調べてみたら、M-DISCという規格(*32)があると知った。対応するドライブメディアを購入すると割高だ、余計に金をかけてまで保存すべきデータはどれだけあるか、そもそも光学メディアの読み書きをする機会はどれだけあるか(*33)等、あれこれ考えた結果光学ドライブは買わないことにした。

サウンド

最近は無音でPCに向かうことが専らなので、USB-DAC排除してHDMIモニタイヤホン出力で済ませることにした。気まぐれに音楽を聴きたくなったらヘッドフォンアンプライン出力につないで使おうと思う。

入力装置

ケースと一緒に死蔵品を引っ張り出した。文字入力を業としない立場なのでキーボードは何でもどうでも良い。

マウスクリックが利き辛くなったので放置してたが、分解修理可能(*34・35・36)だと知ったので実例(*37)を参考に簡単に清掃して使えるようにした。マウスホイール部品交換が必要状態ホイールゴム部分が、加水分解して汚れてたので重曹で洗った(*38)ら、完全に溶けてなくなってしまった)なので、そのうちAliExpressで補修品(MX300適合品ではないが、サイズが同じもの)(*39)を購入しようと思う。

Windowsをどうセットアップたか

初めは旧システムの入ったHDDを新しいM/Bにつないで使っていた。後で中身をSSDクローンしようと考えたが、安物のSSDゆえガンガン書き込むことを必要以上に避けなくても良いなと思い直したので、結局新規インストールすることにした。

Raven RidgeではWindows11アップグレードできない(*40)。だが、Windows11ではGPUが重くなりその対策が未だ無いよう(*41)なので、Windows10のままで良いということにした。

● 旧システムドライブ駆動

Windows7の頃はUEFIで起動しないPCがまだ一般的(*42)だった。このHDDもそういうPCに接続されてたのでフォーマットMBRだった。CSMを有効にすればそのままで起動できるが、そうできるのは古いGPUを使っている時で現行のiGPUではたいてい無効にされる(*43・44)。CSMは頼りにせずGPTに変換して使うのが無難だ。

変換の際はWindows10USB起動メディアmbr2gptを使ったが、ReAgent.xml更新に失敗したというエラーメッセージが出たので、回復パーテーションを弄って(「コンピュータ管理」ではドライブレター付与できないのでdiskpartを使った)修正した(*45・46)。

Microsoftアカウントで常用していたためかライセンスの再認証を求められることも無く、上記問題を除けばほぼすんなりと使用できた。セクターにアライメントのずれが無いかどうか(*47)も調べたが、問題無かった。

新規セットアップ

VMWare上で予行した分も含めて何回もした。セットアップを繰り返した理由は、Administratorを有効にしパスワードを設定しないままメインアカウントを標準ユーザーにしたらAdministratorにログインできなくなって(*48)詰んだり、OneDrive動作選択画面で「このPCにのファイルを保存する」を選択せず「次へ」移動したら戻れなくなった(ドキュメントやピクチャ等のフォルダパスOneDrive指定した後で、再度ローカルストレージに変更するのは割と手間になる)(*49・50)り、システムファイルを移動させようとして次節で説明するようにシステム破壊したりしたためだ。

システムファイルの一部をHDDに移動

SSDの容量節約と書込み抑制のため、ページ、スワップハイバネーションの各ファイルOneDriveフォルダ(ただし、空フォルダマウントしたドライブは移動先に指定できない)・ユーザプロファイルフォルダ下のドキュメント等のフォルダ・AppDataフォルダ下のRoamingフォルダとLocalフォルダの一部・テンポラリフォルダ・ストアアプリフォルダを移動(*51・52・53・54)した。Superfetchはデフォルトで良しとした(*55)。

かつては別アカウントログインしてプロファイルフォルダを全部移動しジャンクションを貼って使うこともできたが、Windows10のあるバージョン以降でそれをするとスタートメニューショートカットやストアアプリ即死する(*56)。一部のシステムファイルが変化するとメニューアプリ全体が損壊判定されるようだ(十分な検証はしてないが、container.datハッシュ値名前になってるファイルを弄ると不味いように感じた)(*57)。こうなるとアカウントを消して再作成する他無くなる。ちなみにCドライブ直下のProgramDataフォルダ等を壊すともっと悲惨で、新規インストールくらいしか回復の手立てが無かった。

おわりに



参考ページ

はてなブックマークされたページにはeidを付記した。

https://b.hatena.ne.jp/entry/1 または https://b.hatena.ne.jp/entry?eid=2(それぞれ、数字部分がeid)のような形式url入力すれば、当該ブックマークエントリーアクセスできる。

タイトル
URL
eid
*1Windows 10バージョンアップを重ねるたびに本当に遅くなっているのか?検証結果はこんな感じ - GIGAZINEhttps://gigazine.net/news/20210622-windows-10-version-slow-down/4704430589992224258
*2Google発見した「CPU脆弱性」とは何なのか。ゲーマーに捧ぐ「正しく恐れる」その方法まとめhttps://www.4gamer.net/games/999/G999902/20180105085/373991174
*3AMDプロセッサ脆弱性セキュリティ企業情報公開--懐疑的見方も - CNET Japanhttps://japan.cnet.com/article/35116106/360332677
*4インテルARMCPU脆弱性「Spectre-v2」の悪夢再び、新たな攻撃手法 | TECH+https://news.mynavi.jp/techplus/article/20220312-2290634/4716634065497432514
*5Sandy Bridgeおじさん」とは何か? : 因画応報http://ingaoho.ldblog.jp/archives/4916067.html362560793
*6ありがとう鼻毛鯖 8年使った鼻毛鯖をついに買い替えました | 日本霜降https://nihonsoukou.com/20181123/18274665750545042615426
*72万円の超格安パソコンGREEN G2」値下げ、高性能CPUに大容量メモリSSD採用仕事でもプライベートでも大活躍 | Buzzap!https://buzzap.jp/news/20220318-trigkey-green-g2-ultra-low-price-pc-happy-price-down-3/4716943171239004674
*812世代インテル Core プロセッサ特集 | パソコンSHOPアークarkhttps://www.ark-pc.co.jp/special/intel-12th-gen-core-series/-
*98GBモジュール | 2枚組 | DDR4 DIMM (288pin) | デスクトップ用 | 通販価格/性能比較一覧 | 価格の安い順 | パソコンSHOPアークarkhttps://www.ark-pc.co.jp/search/?col=3&order=&p1=b21010&p2=c21050&p5=s21010&p6=w11726-
*10〜256GB | M.2 | SSD | 通販価格/性能比較一覧 | 価格の安い順 | パソコンSHOPアークarkhttps://www.ark-pc.co.jp/search/?col=3&order=&p1=b32020&p2=c32024&p5=s32220-
*11やじうまPC Watch中国Intel CPUの偽造品出回る。公式が注意を呼びかけ - PC Watchhttps://pc.watch.impress.co.jp/docs/news/yajiuma/1248215.html4684567815854719490
*12Lenovoに搭載されているAMD CPUベンダーロックが設定されているせいで中古市場が混乱している - GIGAZINEhttps://gigazine.net/news/20220118-lenovo-vendor-lock-amd-cpu/4714151541045747810
*13ASCII.jp冗談ではなく目の前が真っ暗になる恐怖……ピンを曲げてしまったRyzen 9 5950Xの修復を試みる (1/3)https://ascii.jp/elem/000/004/053/4053723/4703873313928579106
*14パソコンが起動しない場合確認方法テックウインド株式会社https://www.tekwind.co.jp/ASU/faq/entry_31.php4666842797243724258
*15自作PC】電源ユニットの選び方を自作経験者がガチ解説する | ちもろぐhttps://chimolog.co/bto-choose-psu/367187040
*16何故プラグインPC電源ユニットコネクタは規格統一されていないのか? - Togetterhttps://togetter.com/li/15640764688976497965880706
*17ブロワーの選び方 | DIY工具紹介部https://diytool.biz/blois170335990
*18“冷却の常識”を徹底検証 - AKIBA PC Hotline!https://akiba-pc.watch.impress.co.jp/docs/dosv/662237.html364049132
*19PCケースのPower LEDケーブル3ピンから2ピンに変換した | TeraDashttps://www.teradas.net/archives/16603/4705898232067265346
*2020ピン ATX 電源は 24ピンのマザーボードに使えるのか – 分かりにくい ASUS マニュアルATX 電源の規格 | Nire.Comhttps://www.nire.com/2009/10/atx-24pin-motherboard-vs-20pin-power/75424033

容量超過のため、anond:20220419200228 に続く。追記もあり。

2022-04-12

私のパスワード

めんどうだから使いまわし全部でいつものを使う

一部サイト文字制限でいつものが使えないのでその場で適当に入れて再ログインのたびに再発行

 

同じパスワードの使いまわしがだめっていうからいつもの+末尾にサービス

 

masuda_no_password+hatena

masuda_no_password+google

みたいな感じ

 

平文保存してるサービスの多さを知って②のパターンだと使いまわし部分が簡単にわかって無意味と気づく

どうせ見られるなら面白いものにしたいと思って

 

getPassword()

 

というプログラムぽいのをパスワードにする

 

サービスアカウントごとには変えておきたい感もあったので引数を使うことにした

 

getPassword("hatena.masuda3")

getPassword("yahoo.masuda1")

 

平文保存してたところでまずみないだろうと気づく

それぞれ別パスワードにしたいけど覚えたくないしパスワードマネージャーは嫌い

ログインIDハッシュ値パスワードにすることにする

 

単純にやると同じことやる人がいそうなので、いつものキーワードログインIDを初期値として誕生日数分繰り返しハッシュ値を求めることにした

使ってる文字種別文字数で文句言われたくないので、ハッシュ値に Aa1_ をプレフィックスにつけて前から要求される最大文字数分切り出したものパスワードにした

 

Aa1_295ae0f759fe6f348346d4ba0484

 

パソコンがあればログインIDといつものキーワードだけで求められるがパソコンがないところでログイン出来ないことに気づく

 

To Be Continued

2022-04-11

パスワードの平文保存

はてなで時々話題になってるけど、受託開発で企業向けなもの作ってると割と普通にある

ユーザ向けよりもエラー起きたときの原因究明とか求められるし本番でもデバッグモードで動かして全ログ出したりとかもある

ログイン出来ないんですけどの回答に「登録されていたパスワードは『password』ですが、入力されたパスワードは『password 』で末尾にスペースが含まれているためにログインに失敗していました」みたいな返答が普通にあるわけ

一般ユーザ向けだとパスワード間違ってるんじゃないですか?リセットしてみてくださいとかで済む

実際自分ユーザとしてなんだったかサービスを使ったときメールが届かないので問い合わせたらこっちのサーバ動作してるのでGoogleとかメールサービス側に問い合わせてくださいみたいなこと言われたことがある

それくらい雑なものでよければいいんだけど変に要求されるからパスワードは平文でログにもパスワードが含まれるとかも当たり前になる

 

あとそういえば一般に公開してるものだけどログインではなくハッシュ値使ったURL個人マイページにしてたりもあった

URL知らないから他の人は見れないけど知っていれば誰でも見れるってやつ

一部の人はありえないとかいいそうだけど個人的にはURL知らなければアクセスできないは非公開と言ってもいい気はしてるけどね

youtube限定公開とか gistプライベートとかでもURL知ってる人しか見れないものを非公開みたいな扱いでつかってるし

URL知ってたら見れるってそれはパスワード知ってれば見れるも一緒

十文字ハッシュ値を見つけるより人によっては10文字もないパスワードのほうが総当りで当たる確率高いよ

 

そんな感じで文化の違いとかを感じたって話

2022-03-21

uuid生成とかハッシュ値比較とか重複しない前提でやってるものごとが釈然としない

0じゃない確率は0じゃないし世界中の端末で試行を重ねたら一個くらい踏み抜いてもおかしくない

2022-03-18

何故パスワード文字数制限があるのか

仮説1:平文保存している

DB設計する場合パスワードカラムを何文字にするか決めなければならない

MySQLならvarchar(10)みたいな感じだ

これを最大2万文字かにできなくもないが、DB容量を圧迫するといった理由で8文字10文字限定していてもおかしくはない

MongoDBのようなオブジェクトDBなら別だがSQL系のDBならこの理由が最もあてはまりそうに思う

同様の理由文字種にも制限をかけてそう(UTF-8とか送られたら面倒)

仮説2:テストができないか

境界テストとしては最大文字数を試さないといけないが無制限だとそれができなくなる

100文字テストするとなると、仕様としては100文字限界ということになって文字制限をかけることになる

ただ、それなら8文字とかで制限している理由として弱い気がする

仮説3:過負荷の防止

制限ということは極端に言うと1GBのパスワードを受け付ける、ということになる

1GBのハッシュ値計算するのはブラウザ側になるのだが、1GBのハッシュ値計算が重くて使えない、という苦情が来るかも知れない

ただ、これも1000文字かにしてしまえば良くて、8文字にしている理由にはならない

仮説4:何も考えていない

ウォーターフォール実装する場合に上位レイヤでの仕様を決めるのはプログラマーでない場合が多く

定型エクセル仕様書に「パスワードの最大文字数」というセルがあって、そこにデフォルトで8という数字が入っている

上位レイヤで仮にそこに100とか1000とかの数字を入れたとき、下位レイヤで何が起こるかわからない

仮に何か起きた場合は書いた人の責任になるから触らない

触らないことで問題が起きてもその人の責任にはならない

まりそこに8と書いた人が現代にいるのではなく、誰も決定していないか文字制限が起きている

下位レイヤでの実装側は平文保存の危険性を十分に理解しているのでハッシュ値(とソルトなど)を格納する

多分、仮説4だと思うが、仮説1でないことを信じたい。

2022-03-17

そもそもハッシュ化の思想を分かってない

暗号化っていうのは

「鍵を知っている人だけが情報を得ることができる」

っていう技術で、ハッシュ化っていうのは

情報の正しさを照合できる」

っていう技術

なので

パスワード暗号化していたら大丈夫

っていうのは嘘で

パスワード暗号化した鍵を大切に保管しているか大丈夫

が正しい

平文を暗号化してサーバに保存している場合は、結局は鍵をサーバに預けているので、信頼情報ユーザの手を離れてしまっている

「めちゃくちゃ厳重に保管しています!!!

って言われても家の鍵を大家に預けているのと同じ状態で家の中に100億円置いてるような人だと信用に足らない

じゃぁ例えばユーザにその鍵を預けておいて、認証の度に渡すようにしよう!なんていうことをやっても

鍵はデジタル情報から簡単コピー可能(追跡不可能)なので一度でも渡したら信用価値ゼロになる

ちなみにこれはハッシュ化でも同じ話で、ハッシュ値をサーバに保存していても平文を送りつけてハッシュ値をサーバ計算していたら意味が無い

ユーザ側でハッシュ値を計算して送りつける方法なら多少は意味があるけれど、結局は鍵がハッシュ値に変わっただけなので通信傍受されたらダメ

なのでダイジェスト認証っていう仕組みを使うので興味がある人は調べて欲しい

ということで、暗号化をしても結局は鍵の扱いに困ることになる

ログインで知りたいのはパスワードのものではなくて「パスワードを知っているかどうか」だけ

なので、ハッシュ化を使って「パスワードを知っていたらハッシュ値も当然知ってるよね・・・?」っていう感じの認証を行う

ここで大事なのはハッシュ化っていうのは秘匿情報ユーザの側にあってサーバ側に渡していない、ということ

なのでプログラムをこねくり回しても原理的には元のパスワードは分からないしそれが基本

そこに「でも単純なパスワード使ってる人がいるかも?」「使い回している人がいるかも?」っていう悪知恵で攻撃してくる人がいるので

ソルトとかペッパーかい小手先防衛してるっていうだけ

あと、秘匿情報ユーザ側にある、といってもどうせスマホとかPCに保存されているのでそっちをクラックされると漏洩する

なので基本的に鍵は脳内に保存した文字列生体認証、もしくはデバイス認証を使う

この辺はパスワードマネージャーを使っていてもマスターパスワード必要になるのと同じ

ここまでがセキュリティ講習の1日目の午前中の話

2022-03-16

anond:20220316202807

前提として、サーバ側のDBの中身が漏洩したと同時に、プログラム設定ファイル、丸ごと全部漏洩したとみなしている。

プログラムDB上のパスワードをどのように処理してるか丸見えになる。

複合できるということは、プログラムの手の届く場所に鍵があるということ。

その鍵がユーザごとに違っていようが関係ない。そのプログラムを通せば複合できるわけだから

複合した結果、元のパスワードを「瞬時に」出せる。

その元のパスワードを使って、正規ユーザのフリをして悪いことができる。

さてハッシュ場合、bcryptなどではソルト付きハッシュ値になってる。

ハッシュ値ごとにソルトが違う構造になってる。

ハッシュなので「時間をかければ」、そのハッシュ値になる値を検索できる。

元のパスワードと同一であるかどうかはわからない。(同一でなければバレる可能性が高まる

1ユーザごとに時間をかける必要がある。

ここである程度時間を稼げるので、サーバ管理者側にサービスを停止したり、パスワードを全部向こうにするような時間の余裕ができる

2022-02-15

anond:20220214164030

NFTは理解してないんだけど、今の時点で皆があまり理解できてないあたりで、ブロックチェーンと同じ空気を感じる

「3秒で理解できるNFT入門」をさらに噛み砕いて言うと、

NFTとは、ブロックチェーン上で動くアプリが持っている、IDとその所有者の対応を記録したデータ

……だよ。

別にそれ以上の凄い機能はなにもない。

アプリ機能によっては、IDさらIDが示す作品アイテムを示すURLハッシュ値がくっついてる程度はありえるけどね。

からNFTはそれ単体で所有権証明しないし、コピーは防ぐような機能なんて無いんだよ。

2022-01-27

まさかngワードに「回避」の弊害が語られるとはな。

ngワードなんてもの暴言を無毒化するためのあるもので、ngに引っかからなくなった時点で無毒化されているわけだからそれでいいだろと。

でも焦点がスパムにあるとそうじゃないんだな。

から5chはngワードを直接公開しない。暴言を含まない投稿を促すには死ねとか馬鹿とか言っちゃだめだよというリストを作って公開するのが一番近道なのにそれをしない。

ほとんどの掲示板snsngワードを公開するタイプ仕様で事足りてる。

それだけ5chのスパム荒らしに占める割合が他サービスより多いということなんだろうな。

からってNGワードハッシュ値から調べさせるという仕様で全ユーザ負担を課して、書き込むのに努力を強いるなんて、仕様としてうまくなさすぎだろと思う。こんな変な仕様5chだけ。

なので結局残ったのは、まともでかつそんな努力しようと思える人よりも、その「努力」を無駄と感じられない程精神イカれた粘着質な荒らしだけ。

5chの衰退した一因はスパムを過剰に恐れたことにあり。

2022-01-18

5chの使い勝手の悪さよ

持ってる画像を直接貼れない。お絵描き機能代用になると思ってるのか。絵心ないやつだっているんだぞ。

NGワード多すぎ。というかなんでURLでNGひっかかるの?imgurなのに。一体どの文字列だよ?

なんで直接教えてくれればいいのにそうしないの?なんでハッシュ値から自分検証しろみたいなアホみたいな仕組みなの?

それで荒らし減ってるの?何の役にも立ってないようだけど?

なによりなんでこんな使い勝手悪い掲示板から皆離れられないの?

今はディスコードとかもういくらでも交流の場はあるじゃんゲロボがバレるから

蓼食う虫も好き好きとは言うがそんな言葉では割り切れない気持ち悪さを5ch住民に感じるわ

自分にとって面白くない芸人の芸で笑ってる人間の何千倍も気味が悪くて一周回って何か腹がたってくる

2022-01-11

ハッシュ値ってなんだ?おいしいのか?

「あー、あとハッシュポテトお願いします」「ハッシュ値はどうなさいますか?」

「SHA256で…」

2021-11-01

おしえて有識者~!

最近NFTアートってあるじゃない?

あれが胡散臭いとかそういうのはいったん置いといて仕組みについて疑問があるので教えてほしい。

ある作家アート作品Xを販売して、100回転売が繰り返されたというようなとき

ブロックチェーン販売履歴が残るから最後購入者(権利者)が明確にわかるというのが基本的な仕組みだと思ってるのね?

そこで疑問なんだけどアート作品Xのコピー(デジタル的に全く同一のもの)を別の人が売りに出した場合

ハッシュ値かなにかで、実体として同じ作品存在することは検知されるようになってるの?

2021-09-04

ポルノ画像ハッシュ値による規制が思ったほどには有効ではない理由

画像動画が1バイト・1ピクセル・1フレームだけ僅かに変えるだけで検知できず、しかも改変後のファイル流通問題ない

・…というのを自動でやられるといたちごっこどころではない

ハッシュ値から画像動画を引き出せないので、それが真正ハッシュ値かどうか誰も永遠に検証できない

・下手すれば(しなくても)実際にハッシュ値提供機関が稼働したら1日に何千という値が日々追加されると思われるが、これをどう信用すればいいのか(すべての値が信用できないと困ることに注意)

2021-08-22

anond:20210822050930

アマゾンギフトカードメールで番号送られてくるタイプ)のレビューページが「使えなかった」「買ったのに使用済みと表示された」の大合唱で、

いくらなんでもハッシュ値由来の番号の衝突はそんなに起こらんやろ奇跡売り場かなんかかと思ってたんだが

なるほどプレゼントコード不正で悪さをしている場合があるのかとすごい腑に落ちた

使う順番とか間違うと「日本国内から正規購入品」でもロックされる(ようにしか見えない)のね

なおハッシュ値の番号は計算法と取り出し法にうっかりオリジナリティを発揮すると簡単に衝突するので注意である二乗ちゃうとか

ログイン ユーザー登録
ようこそ ゲスト さん