RE: shifting bits

2004-03-29 Thread Anton Ganeshalingam
I'm trying to avoid people looking at the data without proper access

tks
Anton

-Original Message-
From: Mike Jackson [mailto:[EMAIL PROTECTED]
Sent: Monday, March 29, 2004 1:54 PM
To: Anton Ganeshalingam
Cc: [EMAIL PROTECTED]
Subject: Re: shifting bits


yes, the string is represented by an array of 8 bit values (or 16 if using 
unicode), and the chr() and asc() (from memory) functions convert between 
text and value representations.

but why would you want to shift a bit of textual data? It would no longer 
be text..

On Mon, 29 Mar 2004 13:18:56 -0800, Anton Ganeshalingam 
[EMAIL PROTECTED] wrote:

 Let's say my data is the following phrase 'Hello World'. This phrase is
 represented in machine language in bits (assuming I'm right). So this was
 the reason I thought I could insert the data into MS db after shifting a
 bit.

 tks
 Anton

 -Original Message-
 From: Mike Jackson [mailto:[EMAIL PROTECTED]
 Sent: Monday, March 29, 2004 12:49 PM
 To: Anton Ganeshalingam
 Cc: [EMAIL PROTECTED]
 Subject: Re: shifting bits


 it sounds like you weren't talking about bit-shifting integers... What do
 you mean by shifting a byte of data by any number?

 On Mon, 29 Mar 2004 12:23:21 -0800, Anton Ganeshalingam
 [EMAIL PROTECTED] wrote:

 Mike,
  Thanks for your reply. But I'm confused not by your answer but my
 lack of knowledge on this matter. How would I convert the data like
 Hello
 World. Should I convert to acssii first ?

 tks
 Anton

 -Original Message-
 From: Mike Jackson [mailto:[EMAIL PROTECTED]
 Sent: Monday, March 29, 2004 12:16 PM
 To: Anton Ganeshalingam; '[EMAIL PROTECTED]'
 Subject: Re: shifting bits


  from perlop:

 Shift Operators

 Binary ``'' returns the value of its left argument shifted left by the
 number of bits specified by the right argument. Arguments should be
 integers. (See also Integer Arithmetic.)

 Binary ``'' returns the value of its left argument shifted right by 
 the
 number of bits specified by the right argument. Arguments should be
 integers. (See also Integer Arithmetic.)

 so,

 use Win32::ODBC;
 $db = new Win32::ODBC('DBQ=myDB.mdb;Driver={Microsoft Access Driver
 (*.mdb)};') or die can't open database;
 $db-Sql SELECT * FROM myTable WHERE someVal=$myConditionalVal;
 if ($db-FetchRow) {
my %datahash = $db-DataHash;
$datahash{myVal} = $datahash{shiftAmt};
$db-Sql UPDATE myTable SET myVal=$datahash{myVal} WHERE
 someVal=$datahash{someVal};
 }
 $db-Close();

 would retrieve a row from myTable where someVal equals 
 $myConditionalVal,
 shift myVal left by shiftAmt bits, and re-write... if you wanna do the
 whole table, just push all the result hashes onto an array, and when
 done,
 go through the array, pop each one, do the shift and re-write...

 which would be even easier with a tied hash - but I havent yet played
 with
 tied hashes...



 On Mon, 29 Mar 2004 11:54:43 -0800, Anton Ganeshalingam
 [EMAIL PROTECTED] wrote:



 Hello to all,
I'm writing a perl program that will take a byte of data and shift
 (right or left) it by any number and write it to a MS access DB. Since
 Perl is free type language how would you accomplish this on perl.

 Please help.

 tks
 Anton

 ___
 Perl-Win32-Users mailing list
 [EMAIL PROTECTED]
 To unsubscribe: http://listserv.ActiveState.com/mailman/mysubs








 ___
 Perl-Win32-Users mailing list
 [EMAIL PROTECTED]
 To unsubscribe: http://listserv.ActiveState.com/mailman/mysubs




___
Perl-Win32-Users mailing list
[EMAIL PROTECTED]
To unsubscribe: http://listserv.ActiveState.com/mailman/mysubs


RE: shifting bits

2004-03-29 Thread Arms, Mike
This combined with this quote from Anton:

  I'm trying to avoid people looking at the data without proper access

sounds like he is wanting to do some really simplistic encryption
of his data that will be stored in a database accessible by
others. Anton, this will be incredibly easy to decipher.
Maybe you should look into the real Crypt::* modules to
significantly increase your security. Of course, this depends 
on you not storing your keys in the clear either (and a list
of other concerns). 

--
Mike Arms


 -Original Message-
 From: Anton Ganeshalingam 
 [mailto:[EMAIL PROTECTED]
 Sent: Monday, March 29, 2004 2:19 PM
 To: 'Mike Jackson'; Anton Ganeshalingam
 Cc: [EMAIL PROTECTED]
 Subject: RE: shifting bits
 
 Let's say my data is the following phrase 'Hello World'. This 
 phrase is represented in machine language in bits (assuming 
 I'm right). So this was the reason I thought I could insert
 the data into MS db after shifting a bit.
 
 tks
 Anton
 
 -Original Message-
 From: Mike Jackson [mailto:[EMAIL PROTECTED]
 Sent: Monday, March 29, 2004 12:49 PM
 To: Anton Ganeshalingam
 Cc: [EMAIL PROTECTED]
 Subject: Re: shifting bits
 
 
 it sounds like you weren't talking about bit-shifting 
 integers... What do you mean by shifting a byte of
 data by any number?
 
 On Mon, 29 Mar 2004 12:23:21 -0800, Anton Ganeshalingam 
 [EMAIL PROTECTED] wrote:
 
  Mike,
  Thanks for your reply. But I'm confused not by your 
 answer but my
  lack of knowledge on this matter. How would I convert the data like 
  Hello
  World. Should I convert to acssii first ?
 
  tks
  Anton
 
  -Original Message-
  From: Mike Jackson [mailto:[EMAIL PROTECTED]
  Sent: Monday, March 29, 2004 12:16 PM
  To: Anton Ganeshalingam; '[EMAIL PROTECTED]'
  Subject: Re: shifting bits
 
 
   from perlop:
 
  Shift Operators
 
  Binary ``'' returns the value of its left argument 
 shifted left by the
  number of bits specified by the right argument. Arguments should be
  integers. (See also Integer Arithmetic.)
 
  Binary ``'' returns the value of its left argument 
 shifted right by the
  number of bits specified by the right argument. Arguments should be
  integers. (See also Integer Arithmetic.)
 
  so,
 
  use Win32::ODBC;
  $db = new Win32::ODBC('DBQ=myDB.mdb;Driver={Microsoft Access Driver
  (*.mdb)};') or die can't open database;
  $db-Sql SELECT * FROM myTable WHERE someVal=$myConditionalVal;
  if ($db-FetchRow) {
 my %datahash = $db-DataHash;
 $datahash{myVal} = $datahash{shiftAmt};
 $db-Sql UPDATE myTable SET myVal=$datahash{myVal} WHERE
  someVal=$datahash{someVal};
  }
  $db-Close();
 
  would retrieve a row from myTable where someVal equals 
 $myConditionalVal,
  shift myVal left by shiftAmt bits, and re-write... if you 
 wanna do the
  whole table, just push all the result hashes onto an array, 
 and when 
  done,
  go through the array, pop each one, do the shift and re-write...
 
  which would be even easier with a tied hash - but I havent 
 yet played 
  with
  tied hashes...
 
 
 
  On Mon, 29 Mar 2004 11:54:43 -0800, Anton Ganeshalingam
  [EMAIL PROTECTED] wrote:
 
 
 
  Hello to all,
I'm writing a perl program that will take a byte of 
 data and shift
  (right or left) it by any number and write it to a MS 
 access DB. Since
  Perl is free type language how would you accomplish this on perl.
 
  Please help.
 
  tks
  Anton

___
Perl-Win32-Users mailing list
[EMAIL PROTECTED]
To unsubscribe: http://listserv.ActiveState.com/mailman/mysubs


RE: shifting bits

2004-03-29 Thread Andrew Timberlake-Newell
Anton Ganeshalingam wrote:
  but why would you want to shift a bit of textual data? It would no 
  longer be text..

 I'm trying to avoid people looking at the data without proper access

Why not just use an encryption module?

___
Perl-Win32-Users mailing list
[EMAIL PROTECTED]
To unsubscribe: http://listserv.ActiveState.com/mailman/mysubs


RE: shifting bits

2004-03-29 Thread Anton Ganeshalingam
Mike,
yes I wanted to use crypt:: modules but my boss looking for a simple
solution.

tks
Anton

-Original Message-
From: Arms, Mike [mailto:[EMAIL PROTECTED]
Sent: Monday, March 29, 2004 2:29 PM
To: 'Anton Ganeshalingam'; 'Mike Jackson'
Cc: [EMAIL PROTECTED]
Subject: RE: shifting bits


This combined with this quote from Anton:

  I'm trying to avoid people looking at the data without proper access

sounds like he is wanting to do some really simplistic encryption
of his data that will be stored in a database accessible by
others. Anton, this will be incredibly easy to decipher.
Maybe you should look into the real Crypt::* modules to
significantly increase your security. Of course, this depends 
on you not storing your keys in the clear either (and a list
of other concerns). 

--
Mike Arms


 -Original Message-
 From: Anton Ganeshalingam 
 [mailto:[EMAIL PROTECTED]
 Sent: Monday, March 29, 2004 2:19 PM
 To: 'Mike Jackson'; Anton Ganeshalingam
 Cc: [EMAIL PROTECTED]
 Subject: RE: shifting bits
 
 Let's say my data is the following phrase 'Hello World'. This 
 phrase is represented in machine language in bits (assuming 
 I'm right). So this was the reason I thought I could insert
 the data into MS db after shifting a bit.
 
 tks
 Anton
 
 -Original Message-
 From: Mike Jackson [mailto:[EMAIL PROTECTED]
 Sent: Monday, March 29, 2004 12:49 PM
 To: Anton Ganeshalingam
 Cc: [EMAIL PROTECTED]
 Subject: Re: shifting bits
 
 
 it sounds like you weren't talking about bit-shifting 
 integers... What do you mean by shifting a byte of
 data by any number?
 
 On Mon, 29 Mar 2004 12:23:21 -0800, Anton Ganeshalingam 
 [EMAIL PROTECTED] wrote:
 
  Mike,
  Thanks for your reply. But I'm confused not by your 
 answer but my
  lack of knowledge on this matter. How would I convert the data like 
  Hello
  World. Should I convert to acssii first ?
 
  tks
  Anton
 
  -Original Message-
  From: Mike Jackson [mailto:[EMAIL PROTECTED]
  Sent: Monday, March 29, 2004 12:16 PM
  To: Anton Ganeshalingam; '[EMAIL PROTECTED]'
  Subject: Re: shifting bits
 
 
   from perlop:
 
  Shift Operators
 
  Binary ``'' returns the value of its left argument 
 shifted left by the
  number of bits specified by the right argument. Arguments should be
  integers. (See also Integer Arithmetic.)
 
  Binary ``'' returns the value of its left argument 
 shifted right by the
  number of bits specified by the right argument. Arguments should be
  integers. (See also Integer Arithmetic.)
 
  so,
 
  use Win32::ODBC;
  $db = new Win32::ODBC('DBQ=myDB.mdb;Driver={Microsoft Access Driver
  (*.mdb)};') or die can't open database;
  $db-Sql SELECT * FROM myTable WHERE someVal=$myConditionalVal;
  if ($db-FetchRow) {
 my %datahash = $db-DataHash;
 $datahash{myVal} = $datahash{shiftAmt};
 $db-Sql UPDATE myTable SET myVal=$datahash{myVal} WHERE
  someVal=$datahash{someVal};
  }
  $db-Close();
 
  would retrieve a row from myTable where someVal equals 
 $myConditionalVal,
  shift myVal left by shiftAmt bits, and re-write... if you 
 wanna do the
  whole table, just push all the result hashes onto an array, 
 and when 
  done,
  go through the array, pop each one, do the shift and re-write...
 
  which would be even easier with a tied hash - but I havent 
 yet played 
  with
  tied hashes...
 
 
 
  On Mon, 29 Mar 2004 11:54:43 -0800, Anton Ganeshalingam
  [EMAIL PROTECTED] wrote:
 
 
 
  Hello to all,
I'm writing a perl program that will take a byte of 
 data and shift
  (right or left) it by any number and write it to a MS 
 access DB. Since
  Perl is free type language how would you accomplish this on perl.
 
  Please help.
 
  tks
  Anton


___
Perl-Win32-Users mailing list
[EMAIL PROTECTED]
To unsubscribe: http://listserv.ActiveState.com/mailman/mysubs


Re: shifting bits

2004-03-29 Thread Sisyphus
Anton Ganeshalingam wrote:
Let's say my data is the following phrase 'Hello World'. This phrase is
represented in machine language in bits (assuming I'm right). So this was
the reason I thought I could insert the data into MS db after shifting a
bit.
Well, you'd have to left shift - and then right shift by the same amount 
to retrieve the original data. (If you right shift first you'll lose 
information.) So you'll probably be printing wide characters to the 
database. Is that going to pose a problem ? (I don't know the answer to 
that question.)

If you're trying to hide the data then there's probably a better 
solution - eg use one of the encryption modules.

But here's one answer to (what I think is) your question. You just 
replace 'H' with
chr(ord('H')  $shift), and do likewise for each of the other 
characters in the string.

my $c = 'Hello World';
my $len = length($c);
my $shift = 3;
for(my $i = 0; $i  $len; $i++) {
   substr($c, $i, 1, chr(ord(substr($c, $i, 1))  $shift));
   }
print $c, \n;

# To recover the info:
for(my $i = 0; $i  $len; $i++) {
   substr($c, $i, 1, chr(ord(substr($c, $i, 1))  $shift));
   }
print $c, \n;

__END__

Cheers,
Rob
___
Perl-Win32-Users mailing list
[EMAIL PROTECTED]
To unsubscribe: http://listserv.ActiveState.com/mailman/mysubs


Re: shifting bits

2004-03-29 Thread Mike Jackson
crypt:: modules ARE the simple solution :)

give it a key and some data, and you have industry-level data protection, 
as safe as the very code of your program - or even better than that if you 
use a password as the source for the key... and all it takes is about 2-3 
instructions.

On Mon, 29 Mar 2004 14:45:00 -0800, Anton Ganeshalingam 
[EMAIL PROTECTED] wrote:

Mike,
yes I wanted to use crypt:: modules but my boss looking for a simple
solution.
tks
Anton
-Original Message-
From: Arms, Mike [mailto:[EMAIL PROTECTED]
Sent: Monday, March 29, 2004 2:29 PM
To: 'Anton Ganeshalingam'; 'Mike Jackson'
Cc: [EMAIL PROTECTED]
Subject: RE: shifting bits
This combined with this quote from Anton:

  I'm trying to avoid people looking at the data without proper access

sounds like he is wanting to do some really simplistic encryption
of his data that will be stored in a database accessible by
others. Anton, this will be incredibly easy to decipher.
Maybe you should look into the real Crypt::* modules to
significantly increase your security. Of course, this depends
on you not storing your keys in the clear either (and a list
of other concerns).
--
Mike Arms

-Original Message-
From: Anton Ganeshalingam
[mailto:[EMAIL PROTECTED]
Sent: Monday, March 29, 2004 2:19 PM
To: 'Mike Jackson'; Anton Ganeshalingam
Cc: [EMAIL PROTECTED]
Subject: RE: shifting bits
Let's say my data is the following phrase 'Hello World'. This
phrase is represented in machine language in bits (assuming
I'm right). So this was the reason I thought I could insert
the data into MS db after shifting a bit.
tks
Anton
-Original Message-
From: Mike Jackson [mailto:[EMAIL PROTECTED]
Sent: Monday, March 29, 2004 12:49 PM
To: Anton Ganeshalingam
Cc: [EMAIL PROTECTED]
Subject: Re: shifting bits
it sounds like you weren't talking about bit-shifting
integers... What do you mean by shifting a byte of
data by any number?
On Mon, 29 Mar 2004 12:23:21 -0800, Anton Ganeshalingam
[EMAIL PROTECTED] wrote:
 Mike,
Thanks for your reply. But I'm confused not by your
answer but my
 lack of knowledge on this matter. How would I convert the data like
 Hello
 World. Should I convert to acssii first ?

 tks
 Anton

 -Original Message-
 From: Mike Jackson [mailto:[EMAIL PROTECTED]
 Sent: Monday, March 29, 2004 12:16 PM
 To: Anton Ganeshalingam; '[EMAIL PROTECTED]'
 Subject: Re: shifting bits


  from perlop:

 Shift Operators

 Binary ``'' returns the value of its left argument
shifted left by the
 number of bits specified by the right argument. Arguments should be
 integers. (See also Integer Arithmetic.)

 Binary ``'' returns the value of its left argument
shifted right by the
 number of bits specified by the right argument. Arguments should be
 integers. (See also Integer Arithmetic.)

 so,

 use Win32::ODBC;
 $db = new Win32::ODBC('DBQ=myDB.mdb;Driver={Microsoft Access Driver
 (*.mdb)};') or die can't open database;
 $db-Sql SELECT * FROM myTable WHERE someVal=$myConditionalVal;
 if ($db-FetchRow) {
my %datahash = $db-DataHash;
$datahash{myVal} = $datahash{shiftAmt};
$db-Sql UPDATE myTable SET myVal=$datahash{myVal} WHERE
 someVal=$datahash{someVal};
 }
 $db-Close();

 would retrieve a row from myTable where someVal equals
$myConditionalVal,
 shift myVal left by shiftAmt bits, and re-write... if you
wanna do the
 whole table, just push all the result hashes onto an array,
and when
 done,
 go through the array, pop each one, do the shift and re-write...

 which would be even easier with a tied hash - but I havent
yet played
 with
 tied hashes...



 On Mon, 29 Mar 2004 11:54:43 -0800, Anton Ganeshalingam
 [EMAIL PROTECTED] wrote:



 Hello to all,
I'm writing a perl program that will take a byte of
data and shift
 (right or left) it by any number and write it to a MS
access DB. Since
 Perl is free type language how would you accomplish this on perl.

 Please help.

 tks
 Anton





___
Perl-Win32-Users mailing list
[EMAIL PROTECTED]
To unsubscribe: http://listserv.ActiveState.com/mailman/mysubs


RE: shifting bits

2004-03-29 Thread Anton Ganeshalingam
yes this is good solution. But how would I convert integer values.

let say $num = '1234'

I may have to insert this into a integer field in a db. Hence, using your
approuch would cause me problems when I convert int data types. For example
trying to convert '10' will produce this '?ê?Ç'. 

should I just use = and = for integer types

tks
Anton

-Original Message-
From: Sisyphus [mailto:[EMAIL PROTECTED]
Sent: Monday, March 29, 2004 2:43 PM
To: Anton Ganeshalingam
Cc: [EMAIL PROTECTED]
Subject: Re: shifting bits


Anton Ganeshalingam wrote:
 Let's say my data is the following phrase 'Hello World'. This phrase is
 represented in machine language in bits (assuming I'm right). So this was
 the reason I thought I could insert the data into MS db after shifting a
 bit.
 

Well, you'd have to left shift - and then right shift by the same amount 
to retrieve the original data. (If you right shift first you'll lose 
information.) So you'll probably be printing wide characters to the 
database. Is that going to pose a problem ? (I don't know the answer to 
that question.)

If you're trying to hide the data then there's probably a better 
solution - eg use one of the encryption modules.

But here's one answer to (what I think is) your question. You just 
replace 'H' with
chr(ord('H')  $shift), and do likewise for each of the other 
characters in the string.

my $c = 'Hello World';
my $len = length($c);
my $shift = 3;

for(my $i = 0; $i  $len; $i++) {
substr($c, $i, 1, chr(ord(substr($c, $i, 1))  $shift));
}

print $c, \n;

# To recover the info:
for(my $i = 0; $i  $len; $i++) {
substr($c, $i, 1, chr(ord(substr($c, $i, 1))  $shift));
}

print $c, \n;

__END__

Cheers,
Rob




___
Perl-Win32-Users mailing list
[EMAIL PROTECTED]
To unsubscribe: http://listserv.ActiveState.com/mailman/mysubs


Re: shifting bits

2004-03-29 Thread Mike Jackson
yep :)

of course, this would make the encoding mechanism very easy to work out - 
a shift left n bits is the same as multiplying by 2^n - so if you = 2, 
the result will just be 4 times bigger.

if someone with a decent understanding of maths saw this pattern, all they 
would have to do is work out how many LSBs were 0, shift right by that 
number (which can be done mentally very easily) and they would have all 
your original data.

On Mon, 29 Mar 2004 16:41:30 -0800, Anton Ganeshalingam 
[EMAIL PROTECTED] wrote:

yes this is good solution. But how would I convert integer values.

let say $num = '1234'

I may have to insert this into a integer field in a db. Hence, using your
approuch would cause me problems when I convert int data types. For 
example
trying to convert '10' will produce this '?ê?Ç'.

should I just use = and = for integer types

tks
Anton
-Original Message-
From: Sisyphus [mailto:[EMAIL PROTECTED]
Sent: Monday, March 29, 2004 2:43 PM
To: Anton Ganeshalingam
Cc: [EMAIL PROTECTED]
Subject: Re: shifting bits
Anton Ganeshalingam wrote:
Let's say my data is the following phrase 'Hello World'. This phrase is
represented in machine language in bits (assuming I'm right). So this 
was
the reason I thought I could insert the data into MS db after shifting a
bit.

Well, you'd have to left shift - and then right shift by the same amount
to retrieve the original data. (If you right shift first you'll lose
information.) So you'll probably be printing wide characters to the
database. Is that going to pose a problem ? (I don't know the answer to
that question.)
If you're trying to hide the data then there's probably a better
solution - eg use one of the encryption modules.
But here's one answer to (what I think is) your question. You just
replace 'H' with
chr(ord('H')  $shift), and do likewise for each of the other
characters in the string.
my $c = 'Hello World';
my $len = length($c);
my $shift = 3;
for(my $i = 0; $i  $len; $i++) {
substr($c, $i, 1, chr(ord(substr($c, $i, 1))  $shift));
}
print $c, \n;

# To recover the info:
for(my $i = 0; $i  $len; $i++) {
substr($c, $i, 1, chr(ord(substr($c, $i, 1))  $shift));
}
print $c, \n;

__END__

Cheers,
Rob


___
Perl-Win32-Users mailing list
[EMAIL PROTECTED]
To unsubscribe: http://listserv.ActiveState.com/mailman/mysubs


___
Perl-Win32-Users mailing list
[EMAIL PROTECTED]
To unsubscribe: http://listserv.ActiveState.com/mailman/mysubs


Re: shifting bits

2004-03-29 Thread Sisyphus
Anton Ganeshalingam wrote:
yes this is good solution. But how would I convert integer values.

let say $num = '1234'

I may have to insert this into a integer field in a db. Hence, using your
approuch would cause me problems when I convert int data types. For example
trying to convert '10' will produce this '?ê?Ç'. 

should I just use = and = for integer types

Yes, you can do that if you want (or must). It's unnecessary from a perl 
perspective. Is it necessary from the database perspective ?

As far as perl is concerned, it doesn't matter whether you shift the int 
value, or shift the ASCII values of the characters. In either case you 
still get the original number back when you reverse the procedure.

Cheers,
Rob
___
Perl-Win32-Users mailing list
[EMAIL PROTECTED]
To unsubscribe: http://listserv.ActiveState.com/mailman/mysubs