当前位置: 首页>>代码示例>>Python>>正文


Python BitArray.overwrite方法代码示例

本文整理汇总了Python中bitstring.BitArray.overwrite方法的典型用法代码示例。如果您正苦于以下问题:Python BitArray.overwrite方法的具体用法?Python BitArray.overwrite怎么用?Python BitArray.overwrite使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在bitstring.BitArray的用法示例。


在下文中一共展示了BitArray.overwrite方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。

示例1: __init__

# 需要导入模块: from bitstring import BitArray [as 别名]
# 或者: from bitstring.BitArray import overwrite [as 别名]
class qubitString:

	def __init__(self,m):

		# size of qubit string
		self.size=m

		# floats can only be 32 or 64 bits
		self.canHaveFloat = True if self.size==32 or self.size==64 else False

		# create BitArray to hold value of qubit string
		self.arrayVal=BitArray(length=m)

		# initialization value for qubits
		initVal=1/np.sqrt(2)

		quString=list()
		for i in range(0,self.size):
			quString.append(qubit(initVal,initVal))

		self.quString=quString
		self.decVal=None
		self.binVal=None
		self.floatVal=None

	def collapse(self):
		self.bitString=list()
		for i in range(0,self.size):
			# observe and collapse qubit to a state
			self.quString[i].collapse()

			# save collapsed value to bit array
			if self.quString[i].value == 1:
				self.arrayVal.overwrite('0b1',i)
			else:
				self.arrayVal.overwrite('0b0',i)

		# update decimal value
		self.decVal=self.arrayVal.int
		self.binVal=self.arrayVal.bin
		if self.canHaveFloat : self.floatVal = self.arrayVal.float

	
	def rotation_gate(self,angle):
		for i,j in enumerate(quString):
			quString[i].rotation_gate(angle)


	def updateDec(self,num):
		# update array value
		self.arrayVal.int=num

		# update binary value
		self.binVal=self.arrayVal.bin

		# update qubits values
		for i in range(0,self.size):
			self.quString[i].value=int(self.binVal[i])
开发者ID:Chiroptera,项目名称:masters_code,代码行数:60,代码来源:qubit.py

示例2: testOverwrite

# 需要导入模块: from bitstring import BitArray [as 别名]
# 或者: from bitstring.BitArray import overwrite [as 别名]
 def testOverwrite(self):
     s = BitArray("0b01110")
     s.overwrite("0b000", 1)
     self.assertEqual(s, "0b00000")
开发者ID:juanrmn,项目名称:Arduino-Telescope-Control,代码行数:6,代码来源:test_bitarray.py

示例3: BitArray

# 需要导入模块: from bitstring import BitArray [as 别名]
# 或者: from bitstring.BitArray import overwrite [as 别名]

#.........这里部分代码省略.........
                raise InvalidDUKPTArguments("Must have either ipek or bdk")
            if len(bdk) != self.BDK_LEN:
                raise InvalidDUKPTArguments("BDK must have a length of %d" % self.BDK_LEN)
            self._bdk = BitArray(bytes=bdk)
        
    def derive_key(self, ipek, ksn):
        """Derive a unique key given the ipek and ksn

        Keyword arguments:
        ipek (BitArray) -- Initial Pin Encryption Key
        ksn (BitArray)  -- Key Serial Number
        """
        c_mask       = BitArray(hex='0xc0c0c0c000000000c0c0c0c000000000')
        ksn_offset   = 2
        ctr_offset   = -3
        right_offset = 8

        # Registers taken from documentation
        curkey = ipek
        ksnr   = BitArray(bytes=ksn.bytes[ksn_offset:])
        r3     = self.copy_counter(ksnr)
        r8     = self.reset_counter(ksnr.bytes)
        sr     = BitArray(hex='0x100000')
       
        while (sr.bytes[0] != '\x00') or (sr.bytes[1] != '\x00') or (sr.bytes[2] != '\x00'):
            tmp = self.copy_counter(sr)
            tmp = tmp & r3
            if (tmp.bytes[0] != '\x00') or (tmp.bytes[1] != '\x00') or (tmp.bytes[2] != '\x00'): 
                # Step 2
                n_ctr = BitArray(bytes=r8.bytes[ctr_offset:]) | sr
                r8    = BitArray(bytes=r8.bytes[:ctr_offset]+n_ctr.bytes)
                
                # Step 3
                r8a   = r8 ^ BitArray(bytes=curkey.bytes[right_offset:])
                
                # Step 4
                cipher = DES.new(curkey.bytes[:DES.key_size], DES.MODE_ECB)
                r8a    = BitArray(bytes=cipher.encrypt(r8a.bytes))
                
                # Step 5
                r8a = BitArray(bytes=curkey.bytes[right_offset:]) ^ r8a

                # Step 6
                curkey = curkey ^ c_mask
                
                # Step 7
                r8b = BitArray(bytes=curkey.bytes[right_offset:]) ^ r8
                
                # Step 8
                cipher = DES.new(curkey.bytes[:DES.key_size], DES.MODE_ECB)
                r8b    = BitArray(bytes=cipher.encrypt(r8b.bytes))
                
                # Step 9
                r8b = BitArray(bytes=curkey.bytes[right_offset:]) ^ r8b

                # Step 10 / 11
                curkey = BitArray(bytes=r8b.bytes+r8a.bytes)

            sr >>= 1
        self._cur_key = curkey
        return curkey

    def reset_counter(self, data):
        """Reset the counter to zero

        Keyword arguments:
        data (raw or BitArray) -- Must be at least 3 bytes
        
        Return:
        BitArray of the data passed in
        """
        if isinstance(data, BitArray):
            data = data.bytes
        if len(data) < 3:
            return None
        mask = BitArray(hex='0xe00000')
        ctr  = BitArray(bytes=data[len(data)-3:])
        return BitArray(bytes=data[:-3] + (mask & ctr).bytes)

    def copy_counter(self, data):
        """Copy only the counter bytes from a given string or BitArray

        Keyword arguments:
        data (raw or BitArray) -- Must be at least 3 bytes

        Return:
        BitArray of only the counter bytes
        """
        mask = BitArray(hex='0x1fffff')
        if len(data.bytes) > 3:
            ctr = BitArray(bytes=data.bytes[-3:])
        else:
            ctr = data

        return mask & ctr

    def increase_counter(self):
        """Increase the counter bytes of the stored ksn by one"""
        ctr = self._ksn.cut(21, start=59).next().int + 1
        self._ksn.overwrite('0b'+BitArray(int=ctr, length=21).bin, 59)
开发者ID:PaulSec,项目名称:DET,代码行数:104,代码来源:dukpt.py


注:本文中的bitstring.BitArray.overwrite方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。