68user's page 掲示板

Prev< No. 4480〜4506> Next  [最新発言に戻る] [過去ログ一覧]
No. 4480 # zsh 2006/01/16 (月) 15:10:38
>>4479 68user
>わたくしのまわりには Solaris がないので試せませんが、これは何が原因で
>最終行が表示されないのでしょうか?

パイプを使用した場合と同様、サブシェルで動作する事が原因のようです。
Solaris8のshで確認した所、forkしてからサブシェルの中でファイルを
オープンしていました。
(ksh/bash/zshはサブシェルで動作しないので問題なし。)

No. 4481 # 2006/01/16 (月) 23:39:42
>>4480 zsh

>パイプを使用した場合と同様、サブシェルで動作する事が原因のようです。
>Solaris8のshで確認した所、forkしてからサブシェルの中でファイルを
>オープンしていました。
サブシェルで動作するとは、子プロセスでシェル起動しているというこ
ですか。

whileの前に
exec 0<file.txt
を入れないと、最終行が表示されないということですか。

No. 4482 # 68user 2006/01/17 (火) 10:45:07
>>4480 zsh
あー、なるほど。
>>4467 68user
> 補足。Solaris の sh では
>> while read -r line; do
>> done < file.txt
> でもダメなようですね
のことですね。別件かと勘違いしておりました。

No. 4483 # zsh 2006/01/17 (火) 10:51:51
>>4481
>サブシェルで動作するとは、子プロセスでシェル起動しているというこ
>ですか。

その通りです。

>whileの前に
>exec 0<file.txt
>を入れないと、最終行が表示されないということですか。

サブシェル(while)内で
use_buf=1
としても、親シェルには引き継がれないので
最後の if 文が必ず偽になります。
よって、最終行(最終行が半角スペースで始まる場合には最終 2 行)が
表示されないと思います。

No. 4485 # 2006/01/17 (火) 12:54:25
>>4483 zsh
試して見ました。

ファイルの最後が空行(最終行が改行コードで終了)の場合、
whileの前に
exec 0<file.txt
を入れないくても、最終行が表示されました。

最終行の終わりが、改行コードではなく、ファイルの終端(EOF)がある場合、
catコマンドでファイルを表示した時、最終行の後ろに、プロンプトが来る
ファイルをやると、最終行が表示されません。
whileの前に
exec 0<file.txt
を入れた場合でも。

No. 4486 # zsh 2006/01/20 (金) 11:01:34
>>4485
>ファイルの最後が空行(最終行が改行コードで終了)の場合、
>whileの前に
>exec 0<file.txt
>を入れないくても、最終行が表示されました。

試してみましたが、最終行(空行)は表示されませんでした。
Solaris 標準の sh ですよね?

>最終行の終わりが、改行コードではなく、ファイルの終端(EOF)がある場合、
>catコマンドでファイルを表示した時、最終行の後ろに、プロンプトが来る
>ファイルをやると、最終行が表示されません。

それは read コマンドが読込めないので、仕方がないというか
そこまでやるならシェルスクリプトにこだわらない方が良いかと。

No. 4487 # 68user 2006/01/23 (月) 01:49:38
GD::Graph で遊んでみました。
    http://x68000.q-e-d.net/~68user/webcgi/gd-graph.html
    http://x68000.q-e-d.net/~68user/webcgi/sample/perl/graph-maker.cgi

No. 4488 # take 2006/01/23 (月) 11:04:50
はじめまして。
おじゃまいたします。

早速ですが
Opensslライブラリを使用して復号処理を実装したいと考えておりまして
RSA鍵交換の場合は、おおまかに分かりましたが
DH鍵交換の実装方法がなかなか調べても分からない状況です。
おそらくRSAとは使用するI/Fが異なるのではないかと考えています。

ご存知の方いらっしゃいましたら
ご教授頂けないでしょうか。

RSA鍵交換の場合は下記のような感じです(秘密鍵は知っている前提)

(1) pre_master_secretを取得する
        RSA_private_decrypt()を呼び出す

(2) 上記のpre_master_secretとclient_randomとserver_random値より
      master_secretを生成

(3) データを復号する(master_secretが分かれば復号できる)
        EVP_Cipher()を呼び出す

赤色の文字は 「Windows 機種依存文字」か、いわゆる「半角カナ」です。 この掲示板では自動変換されますが、今後は使用しないで下さい

No. 4489 # take 2006/01/23 (月) 11:10:06
はじめまして。
おじゃまいたします。

早速ですが
Opensslライブラリを使用して復号処理を実装したいと考えておりまして
RSA鍵交換の場合は、おおまかに分かりましたが
DH鍵交換の実装方法がなかなか調べても分からない状況です。
おそらくRSAとは使用するI/Fが異なるのではないかと考えています。

ご存知の方いらっしゃいましたら
ご教授頂けないでしょうか。

RSA鍵交換の場合は下記のような感じです(秘密鍵は知っている前提)

(1) pre_master_secretを取得する
        RSA_private_decrypt()を呼び出す

(2) 上記のpre_master_secretとclient_randomとserver_random値より
      master_secretを生成

(3) データを復号する(master_secretが分かれば復号できる)
        EVP_Cipher()を呼び出す

No. 4490 # take 2006/01/23 (月) 11:13:08
>>4488 take
>>4489 take
2度書きしてしまいました。
申し訳ありません。

No. 4491 # 68user 2006/01/23 (月) 16:08:33
>>4489 take
> DH鍵交換の実装方法がなかなか調べても分からない状況です。
わたしにもさっぱりわかりませんが、以下の URL はチェック済ですか?
    http://www.openssl.org/docs/crypto/dh.html
    http://matagi.sakura.ne.jp/mt/archives/2005/03/openssldh.html

No. 4492 # take 2006/01/24 (火) 13:52:18
>>4491 68user
>わたしにもさっぱりわかりませんが、以下の URL はチェック済ですか?
> http://www.openssl.org/docs/crypto/dh.html
> http://matagi.sakura.ne.jp/mt/archives/2005/03/openssldh.html

お返事ありがとうございます。

DH法用の関数はこれなんですね。
お教え頂いた情報を参考に、更に調べてまいります。

No. 4493 # 2006/02/02 (木) 13:06:23
シェルスクリプトで、
ファイルからフィールド1を読み込み、前後にシングルクォーテーション「'」を
付けて、区切りの1行にしたいのですが、「'」を上手く付けることができません。
「'」の使い方が不正とかで怒られます。

#!/bin/csh

nawk -F"," ' { \
  if (FNR==1) printf("\'%s\'", $1); \
  else printf(",\'%s\'", $1) \
}' file.txt

一度、ダブルクォーテーション「"」にしてからsedで置換しよとしたのですが、
sedでも「'」の使い方が不正とかで怒られます。

nawk -F"," ' { \\
  if (FNR==1) printf("\"%s\"", $1); \\
  else printf(",\"%s\"", $1) \\
}' file.txt | sed 's/"/\'/g'

または、

set a = `nawk -F"," ' { \\
  if (FNR==1) printf("\"%s\"", $1); \\
  else printf(",\"%s\"", $1) \\
}' file.txt`
echo $a | sed 's/"/\'/g'

どのようにすればよいのですか。

OSは、Solairs8

No. 4494 # 2006/02/02 (木) 13:08:17
>>4493
参照するファイルについて書いていませんでした。
# cat file.txt
Tokyo,
Oosaka,
Nagoya,
Kyoto,
Kyusyu,

No. 4495 # 68user 2006/02/02 (木) 14:04:20
>>4493
csh は馬鹿なので、シングルクォートの中にシングルクォートを書くことはできません。
つまり、
    echo '\''
はエラーです (sh も同様)。同様に
    echo "\""
もエラーになります (sh ならこっちは OK)。

で、csh には (sh も)
        echo "文字列1""文字列2""文字列3"
        echo "文字列1"文字列2"文字列3"
        echo '文字列1''文字列2''文字列3'
        echo '文字列1'文字列2'文字列3'
のいずれも、
        echo "文字列1文字列2文字列3"
と (基本的には) 同じ、という性質があります。

よって、csh で
    'abcdef'
を出力したい場合は、
    echo "'"abcdef"'"
    echo "'""abcdef""'"
などとします。

シェルのクォートは「ネストさせない」が鉄則です。

No. 4496 # 2006/02/03 (金) 15:40:28
>> 4495
無理なのですか。

一度、ファイルから取得したものループでechoコマンドを
使いながら編集するということですね。

#!/bin/csh

set ALL="Tokyo Oosaka Nagoya Kyoto"

@ i = 1
foreach EACH ($ALL)

        if ($i == 1) then
                set ALLS=`echo "'"$EACH"'"`
        else
                set ALLS=`echo $ALLS",'"$EACH"'"`
        endif
        @ i++
end
echo $ALLS

No. 4497 # zsh 2006/02/03 (金) 18:39:14
>>4496
確認していませんが、awk のプログラム部分を別ファイルにして
-f オプションで指定しても出来ると思います。
(この場合はシングルクォートのエスケープは不要です。)

No. 4498 # 68user 2006/02/03 (金) 18:43:58
>>4496
> 無理なのですか。
いいえ。
    awk -F"," '{if (FNR==1){printf "'"'"'%s'"'"'",$1}else{printf ",'"'"'%s'"'"'",$1}}'<file.txt

No. 4499 # 2006/02/04 (土) 10:03:49
>>4497 zsh
>>4498 68user
zshさん、68userさん
ありがとうございます。
出来ました。

「'」を「"」で囲って連続して付けることは試してはいたのですが、
私が試していたのとは違っていました。
それよりも、「'%s'」とするのには気が付きませんでした。
常に「"%s"」としていました。

ただ、
awkで行うと、
,'Tokyo','Oosaka','Nagoya','Kyoto','Kyusyu'
と1行目に読み込んだものにもカンマ「,」がついてしまします。
nawkで行うと
'Tokyo','Oosaka','Nagoya','Kyoto','Kyusyu'
となります。
何が違いとかあるのでしょうか。

No. 4500 # zsh 2006/02/05 (日) 00:07:23
>>4499
Solaris の awk では FNR という変数はありません。
NR に変更すれば動作すると思います。
(NR と FNR では、複数ファイルを入力とした時に値が異なります。)

No. 4501 # hidemaru [E-mail] 2006/02/05 (日) 12:02:32
はじめまして、漠然とした質問なのですが、
SSLv3のハンドシェイク処理の部分を実際に
(Cで)実現する方法を知っている方、もしくは
何か参考になるものがあれば教えてください。

No. 4502 # hidemaru 2006/02/05 (日) 12:08:35
環境は、vine linux 、 openssl-0.9.7d-0vl3.2 です。

No. 4503 # esam 2006/02/06 (月) 19:01:18
はじめましてe。いつもいろいろと参考にさせてもらってます。
いろいろ試したのですが、わからないので質問させて下さい。
http://tomorrows-wind.at.webry.info/200507/article_21.html
↑ちょうど私の書いたプログラムとほぼ同じだったので
ちょっと勝手に拝借したんですが、このソース
私のやってる環境では、エラーがでるんですよね。
エラーが出るのは、最後のRSA_private_decrypt関数です。
これは私だけなんでしょうか?どなたか試していただけませんか?
鍵に関しては、コマンドラインから暗号化,復号化に成功しているので
問題ないと思われます。
お願いします。
実行環境:vine linux OpenSSL 0.9.7d 17 Mar 2004

No. 4504 # tkoba 2006/02/06 (月) 19:54:42
>>4503 esam
dectxt = malloc(RSA_size(rsapriv));
を、
dectxt = calloc(1, RSA_size(rsapriv));
と書き換えることでエラーが消えることを確認しました。

(環境: Vine Linux 3.2, OpenSSL 0.9.7d 0vl3.2)

No. 4505 # tkoba 2006/02/06 (月) 20:15:29
>>4503 esam

>>4504 は無視してください。

> http://tomorrows-wind.at.webry.info/200507/article_21.html

plaintxt = malloc(sizeof(char)*7);
strcpy(plaintxt, "abcdefg");
というのがおかしいですね。ここを直せばうまく動いた気がします。

No. 4506 # tkoba 2006/02/06 (月) 20:55:40
>>4503 esam
たびたびすみません。

if((enclen = RSA_public_encrypt(strlen(plaintxt), ...

if((enclen = RSA_public_encrypt(strlen(plaintxt) + 1, ...
とし、
if((declen = RSA_private_decrypt(strlen(enctxt), ...

if((declen = RSA_private_decrypt(RSA_size(rsapub), ...
としなければいけません。

Prev< No. 4480〜4506> Next  [最新発言に戻る] [過去ログ一覧]